blob: be4465857dbf9438d0aeddf89dddab4d3adbe9a8 [file] [log] [blame]
(window.webpackJsonp=window.webpackJsonp||[]).push([[864],{1260:function(t,s,a){"use strict";a.r(s);var n=a(29),e=Object(n.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"tsfile-spark-connector用户指南"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#tsfile-spark-connector用户指南"}},[t._v("#")]),t._v(" TsFile-Spark-Connector用户指南")]),t._v(" "),s("h2",{attrs:{id:"_1-关于tsfile-spark-connector"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_1-关于tsfile-spark-connector"}},[t._v("#")]),t._v(" 1. 关于TsFile-Spark-Connector")]),t._v(" "),s("p",[t._v("TsFile-Spark-Connector对Tsfile类型的外部数据源实现Spark的支持。 这使用户可以通过Spark读取,写入和查询Tsfile。")]),t._v(" "),s("p",[t._v("使用此连接器,您可以")]),t._v(" "),s("ul",[s("li",[t._v("从本地文件系统或hdfs将单个TsFile加载到Spark")]),t._v(" "),s("li",[t._v("从本地文件系统或hdfs将特定目录中的所有文件加载到Spark")]),t._v(" "),s("li",[t._v("将数据从Spark写入TsFile")])]),t._v(" "),s("h2",{attrs:{id:"_2-系统要求"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_2-系统要求"}},[t._v("#")]),t._v(" 2. 系统要求")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Spark版本")]),t._v(" "),s("th",[t._v("Scala 版本")]),t._v(" "),s("th",[t._v("Java 版本")]),t._v(" "),s("th",[t._v("TsFile")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("2.4.3")])]),t._v(" "),s("td",[s("code",[t._v("2.11.8")])]),t._v(" "),s("td",[s("code",[t._v("1.8")])]),t._v(" "),s("td",[s("code",[t._v("0.9.3")])])])])]),t._v(" "),s("blockquote",[s("p",[t._v("注意:有关如何下载和使用TsFile的更多信息,请参见以下链接: https://github.com/apache/incubator-iotdb/tree/master/tsfile.")])]),t._v(" "),s("h2",{attrs:{id:"_3-快速开始"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_3-快速开始"}},[t._v("#")]),t._v(" 3. 快速开始")]),t._v(" "),s("h3",{attrs:{id:"本地模式"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#本地模式"}},[t._v("#")]),t._v(" 本地模式")]),t._v(" "),s("p",[t._v("在本地模式下使用TsFile-Spark-Connector启动Spark:")]),t._v(" "),s("div",{staticClass:"language- line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("./<spark-shell-path> --jars tsfile-spark-connector.jar,tsfile-0.9.3-jar-with-dependencies.jar\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br")])]),s("p",[t._v("注意:")]),t._v(" "),s("ul",[s("li",[t._v("<spark-shell-path>是您的spark-shell的真实路径。")]),t._v(" "),s("li",[t._v("多个jar包用逗号分隔,没有任何空格。")]),t._v(" "),s("li",[t._v("有关如何获取TsFile的信息,请参见https://github.com/apache/incubator-iotdb/tree/master/tsfile。")])]),t._v(" "),s("h3",{attrs:{id:"分布式模式"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#分布式模式"}},[t._v("#")]),t._v(" 分布式模式")]),t._v(" "),s("p",[t._v("在分布式模式下使用TsFile-Spark-Connector启动Spark(即,Spark集群通过spark-shell连接):")]),t._v(" "),s("div",{staticClass:"language- line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v(". /<spark-shell-path> --jars tsfile-spark-connector.jar,tsfile-0.9.3-jar-with-dependencies.jar --master spark://ip:7077\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br")])]),s("p",[t._v("注意:")]),t._v(" "),s("ul",[s("li",[t._v("<spark-shell-path>是您的spark-shell的真实路径。")]),t._v(" "),s("li",[t._v("多个jar包用逗号分隔,没有任何空格。")]),t._v(" "),s("li",[t._v("有关如何获取TsFile的信息,请参见https://github.com/apache/incubator-iotdb/tree/master/tsfile。")])]),t._v(" "),s("h2",{attrs:{id:"_4-数据类型对应"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_4-数据类型对应"}},[t._v("#")]),t._v(" 4. 数据类型对应")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("TsFile数据类型")]),t._v(" "),s("th",[t._v("SparkSQL数据类型")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("BOOLEAN")]),t._v(" "),s("td",[t._v("BooleanType")])]),t._v(" "),s("tr",[s("td",[t._v("INT32")]),t._v(" "),s("td",[t._v("IntegerType")])]),t._v(" "),s("tr",[s("td",[t._v("INT64")]),t._v(" "),s("td",[t._v("LongType")])]),t._v(" "),s("tr",[s("td",[t._v("FLOAT")]),t._v(" "),s("td",[t._v("FloatType")])]),t._v(" "),s("tr",[s("td",[t._v("DOUBLE")]),t._v(" "),s("td",[t._v("DoubleType")])]),t._v(" "),s("tr",[s("td",[t._v("TEXT")]),t._v(" "),s("td",[t._v("StringType")])])])]),t._v(" "),s("h2",{attrs:{id:"_5-模式推断"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_5-模式推断"}},[t._v("#")]),t._v(" 5. 模式推断")]),t._v(" "),s("p",[t._v("显示TsFile的方式取决于架构。 以以下TsFile结构为例:TsFile模式中有三个度量:状态,温度和硬件。 这三种测量的基本信息如下:")]),t._v(" "),s("center",[s("table",{staticStyle:{"text-align":"center"}},[s("tr",[s("th",{attrs:{colspan:"2"}},[t._v("名称")]),s("th",{attrs:{colspan:"2"}},[t._v("类型")]),s("th",{attrs:{colspan:"2"}},[t._v("编码")])]),t._v(" "),s("tr",[s("td",{attrs:{colspan:"2"}},[t._v("status")]),s("td",{attrs:{colspan:"2"}},[t._v("Boolean")]),s("td",{attrs:{colspan:"2"}},[t._v("PLAIN")])]),t._v(" "),s("tr",[s("td",{attrs:{colspan:"2"}},[t._v("temperature")]),s("td",{attrs:{colspan:"2"}},[t._v("Float")]),s("td",{attrs:{colspan:"2"}},[t._v("RLE")])]),t._v(" "),s("tr",[s("td",{attrs:{colspan:"2"}},[t._v("hardware")]),s("td",{attrs:{colspan:"2"}},[t._v("Text")]),s("td",{attrs:{colspan:"2"}},[t._v("PLAIN")])])])]),t._v(" "),s("p",[t._v("TsFile中的现有数据如下:")]),t._v(" "),s("center",[s("table",{staticStyle:{"text-align":"center"}},[s("tr",[s("th",{attrs:{colspan:"4"}},[t._v("device:root.ln.wf01.wt01")]),s("th",{attrs:{colspan:"4"}},[t._v("device:root.ln.wf02.wt02")])]),t._v(" "),s("tr",[s("th",{attrs:{colspan:"2"}},[t._v("status")]),s("th",{attrs:{colspan:"2"}},[t._v("temperature")]),s("th",{attrs:{colspan:"2"}},[t._v("hardware")]),s("th",{attrs:{colspan:"2"}},[t._v("status")])]),t._v(" "),s("tr",[s("th",[t._v("time")]),s("th",[t._v("value")]),s("th",[t._v("time")]),s("th",[t._v("value")]),s("th",[t._v("time")]),s("th",[t._v("value")]),s("th",[t._v("time")]),s("th",[t._v("value")])]),t._v(" "),s("tr",[s("td",[t._v("1")]),s("td",[t._v("True")]),s("td",[t._v("1")]),s("td",[t._v("2.2")]),s("td",[t._v("2")]),s("td",[t._v('"aaa"')]),s("td",[t._v("1")]),s("td",[t._v("True")])]),t._v(" "),s("tr",[s("td",[t._v("3")]),s("td",[t._v("True")]),s("td",[t._v("2")]),s("td",[t._v("2.2")]),s("td",[t._v("4")]),s("td",[t._v('"bbb"')]),s("td",[t._v("2")]),s("td",[t._v("False")])]),t._v(" "),s("tr",[s("td",[t._v("5")]),s("td",[t._v(" False ")]),s("td",[t._v("3")]),s("td",[t._v("2.1")]),s("td",[t._v("6")]),s("td",[t._v('"ccc"')]),s("td",[t._v("4")]),s("td",[t._v("True")])])])]),t._v(" "),s("p",[t._v("相应的SparkSQL表如下:")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("time")]),t._v(" "),s("th",[t._v("root.ln.wf02.wt02.temperature")]),t._v(" "),s("th",[t._v("root.ln.wf02.wt02.status")]),t._v(" "),s("th",[t._v("root.ln.wf02.wt02.hardware")]),t._v(" "),s("th",[t._v("root.ln.wf01.wt01.temperature")]),t._v(" "),s("th",[t._v("root.ln.wf01.wt01.status")]),t._v(" "),s("th",[t._v("root.ln.wf01.wt01.hardware")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("1")]),t._v(" "),s("td",[t._v("null")]),t._v(" "),s("td",[t._v("true")]),t._v(" "),s("td",[t._v("null")]),t._v(" "),s("td",[t._v("2.2")]),t._v(" "),s("td",[t._v("true")]),t._v(" "),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("2")]),t._v(" "),s("td",[t._v("null")]),t._v(" "),s("td",[t._v("false")]),t._v(" "),s("td",[t._v("aaa")]),t._v(" "),s("td",[t._v("2.2")]),t._v(" "),s("td",[t._v("null")]),t._v(" "),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("3")]),t._v(" "),s("td",[t._v("null")]),t._v(" "),s("td",[t._v("null")]),t._v(" "),s("td",[t._v("null")]),t._v(" "),s("td",[t._v("2.1")]),t._v(" "),s("td",[t._v("true")]),t._v(" "),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("4")]),t._v(" "),s("td",[t._v("null")]),t._v(" "),s("td",[t._v("true")]),t._v(" "),s("td",[t._v("bbb")]),t._v(" "),s("td",[t._v("null")]),t._v(" "),s("td",[t._v("null")]),t._v(" "),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("5")]),t._v(" "),s("td",[t._v("null")]),t._v(" "),s("td",[t._v("null")]),t._v(" "),s("td",[t._v("null")]),t._v(" "),s("td",[t._v("null")]),t._v(" "),s("td",[t._v("false")]),t._v(" "),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("6")]),t._v(" "),s("td",[t._v("null")]),t._v(" "),s("td",[t._v("null")]),t._v(" "),s("td",[t._v("ccc")]),t._v(" "),s("td",[t._v("null")]),t._v(" "),s("td",[t._v("null")]),t._v(" "),s("td",[t._v("null")])])])]),t._v(" "),s("p",[t._v("您还可以使用如下所示的窄表形式:(您可以参阅第6部分,了解如何使用窄表形式)")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("time")]),t._v(" "),s("th",[t._v("device_name")]),t._v(" "),s("th",[t._v("status")]),t._v(" "),s("th",[t._v("hardware")]),t._v(" "),s("th",[t._v("temperature")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("1")]),t._v(" "),s("td",[t._v("root.ln.wf02.wt01")]),t._v(" "),s("td",[t._v("true")]),t._v(" "),s("td",[t._v("null")]),t._v(" "),s("td",[t._v("2.2")])]),t._v(" "),s("tr",[s("td",[t._v("1")]),t._v(" "),s("td",[t._v("root.ln.wf02.wt02")]),t._v(" "),s("td",[t._v("true")]),t._v(" "),s("td",[t._v("null")]),t._v(" "),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("2")]),t._v(" "),s("td",[t._v("root.ln.wf02.wt01")]),t._v(" "),s("td",[t._v("null")]),t._v(" "),s("td",[t._v("null")]),t._v(" "),s("td",[t._v("2.2")])]),t._v(" "),s("tr",[s("td",[t._v("2")]),t._v(" "),s("td",[t._v("root.ln.wf02.wt02")]),t._v(" "),s("td",[t._v("false")]),t._v(" "),s("td",[t._v("aaa")]),t._v(" "),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("3")]),t._v(" "),s("td",[t._v("root.ln.wf02.wt01")]),t._v(" "),s("td",[t._v("true")]),t._v(" "),s("td",[t._v("null")]),t._v(" "),s("td",[t._v("2.1")])]),t._v(" "),s("tr",[s("td",[t._v("4")]),t._v(" "),s("td",[t._v("root.ln.wf02.wt02")]),t._v(" "),s("td",[t._v("true")]),t._v(" "),s("td",[t._v("bbb")]),t._v(" "),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("5")]),t._v(" "),s("td",[t._v("root.ln.wf02.wt01")]),t._v(" "),s("td",[t._v("false")]),t._v(" "),s("td",[t._v("null")]),t._v(" "),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("6")]),t._v(" "),s("td",[t._v("root.ln.wf02.wt02")]),t._v(" "),s("td",[t._v("null")]),t._v(" "),s("td",[t._v("ccc")]),t._v(" "),s("td",[t._v("null")])])])]),t._v(" "),s("h2",{attrs:{id:"_6-scala-api"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_6-scala-api"}},[t._v("#")]),t._v(" 6. Scala API")]),t._v(" "),s("p",[t._v("注意:请记住预先分配必要的读写权限。")]),t._v(" "),s("h3",{attrs:{id:"示例1-从本地文件系统读取"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#示例1-从本地文件系统读取"}},[t._v("#")]),t._v(" 示例1:从本地文件系统读取")]),t._v(" "),s("div",{staticClass:"language-scala line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-scala"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("import")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token namespace"}},[t._v("org"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("apache"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("iotdb"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("tsfile"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")])]),t._v("_\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("val")]),t._v(" wide_df "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" spark"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("read"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("tsfile"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"test.tsfile"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \nwide_df"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("show\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("val")]),t._v(" narrow_df "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" spark"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("read"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("tsfile"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"test.tsfile"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \nnarrow_df"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("show\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br")])]),s("h3",{attrs:{id:"示例2-从hadoop文件系统读取"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#示例2-从hadoop文件系统读取"}},[t._v("#")]),t._v(" 示例2:从hadoop文件系统读取")]),t._v(" "),s("div",{staticClass:"language-scala line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-scala"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("import")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token namespace"}},[t._v("org"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("apache"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("iotdb"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("tsfile"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")])]),t._v("_\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("val")]),t._v(" wide_df "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" spark"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("read"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("tsfile"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hdfs://localhost:9000/test.tsfile"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \nwide_df"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("show\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("val")]),t._v(" narrow_df "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" spark"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("read"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("tsfile"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hdfs://localhost:9000/test.tsfile"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \nnarrow_df"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("show\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br")])]),s("h3",{attrs:{id:"示例3-从特定目录读取"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#示例3-从特定目录读取"}},[t._v("#")]),t._v(" 示例3:从特定目录读取")]),t._v(" "),s("div",{staticClass:"language-scala line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-scala"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("import")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token namespace"}},[t._v("org"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("apache"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("iotdb"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("tsfile"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")])]),t._v("_\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("val")]),t._v(" df "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" spark"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("read"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("tsfile"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hdfs://localhost:9000/usr/hadoop"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \ndf"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("show\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br")])]),s("p",[t._v("注1:现在不支持目录中所有TsFile的全局时间排序。")]),t._v(" "),s("p",[t._v("注2:具有相同名称的度量应具有相同的架构。")]),t._v(" "),s("h3",{attrs:{id:"示例4-广泛形式的查询"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#示例4-广泛形式的查询"}},[t._v("#")]),t._v(" 示例4:广泛形式的查询")]),t._v(" "),s("div",{staticClass:"language-scala line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-scala"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("import")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token namespace"}},[t._v("org"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("apache"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("iotdb"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("tsfile"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")])]),t._v("_\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("val")]),t._v(" df "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" spark"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("read"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("tsfile"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hdfs://localhost:9000/test.tsfile"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \ndf"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("createOrReplaceTempView"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"tsfile_table"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("val")]),t._v(" newDf "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" spark"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("sql"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"select * from tsfile_table where `device_1.sensor_1`>0 and `device_1.sensor_2` < 22"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nnewDf"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("show\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br")])]),s("div",{staticClass:"language-scala line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-scala"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("import")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token namespace"}},[t._v("org"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("apache"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("iotdb"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("tsfile"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")])]),t._v("_\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("val")]),t._v(" df "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" spark"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("read"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("tsfile"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hdfs://localhost:9000/test.tsfile"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \ndf"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("createOrReplaceTempView"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"tsfile_table"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("val")]),t._v(" newDf "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" spark"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("sql"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"select count(*) from tsfile_table"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nnewDf"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("show\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br")])]),s("h3",{attrs:{id:"示例5-缩小形式的查询"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#示例5-缩小形式的查询"}},[t._v("#")]),t._v(" 示例5:缩小形式的查询")]),t._v(" "),s("div",{staticClass:"language-scala line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-scala"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("import")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token namespace"}},[t._v("org"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("apache"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("iotdb"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("tsfile"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")])]),t._v("_\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("val")]),t._v(" df "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" spark"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("read"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("tsfile"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hdfs://localhost:9000/test.tsfile"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \ndf"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("createOrReplaceTempView"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"tsfile_table"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("val")]),t._v(" newDf "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" spark"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("sql"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("\"select * from tsfile_table where device_name = 'root.ln.wf02.wt02' and temperature > 5\"")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nnewDf"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("show\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br")])]),s("div",{staticClass:"language-scala line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-scala"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("import")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token namespace"}},[t._v("org"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("apache"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("iotdb"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("tsfile"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")])]),t._v("_\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("val")]),t._v(" df "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" spark"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("read"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("tsfile"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hdfs://localhost:9000/test.tsfile"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \ndf"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("createOrReplaceTempView"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"tsfile_table"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("val")]),t._v(" newDf "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" spark"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("sql"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"select count(*) from tsfile_table"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nnewDf"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("show\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br")])]),s("h3",{attrs:{id:"例子6-以宽写形式"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#例子6-以宽写形式"}},[t._v("#")]),t._v(" 例子6:以宽写形式")]),t._v(" "),s("div",{staticClass:"language-scala line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-scala"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// we only support wide_form table to write")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("import")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token namespace"}},[t._v("org"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("apache"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("iotdb"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("tsfile"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")])]),t._v("_\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("val")]),t._v(" df "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" spark"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("read"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("tsfile"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hdfs://localhost:9000/test.tsfile"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \ndf"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("show\ndf"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("write"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("tsfile"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hdfs://localhost:9000/output"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("val")]),t._v(" newDf "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" spark"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("read"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("tsfile"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hdfs://localhost:9000/output"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nnewDf"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("show\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br"),s("span",{staticClass:"line-number"},[t._v("7")]),s("br"),s("span",{staticClass:"line-number"},[t._v("8")]),s("br"),s("span",{staticClass:"line-number"},[t._v("9")]),s("br")])]),s("h2",{attrs:{id:"示例6-以窄写形式"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#示例6-以窄写形式"}},[t._v("#")]),t._v(" 示例6:以窄写形式")]),t._v(" "),s("div",{staticClass:"language-scala line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-scala"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// we only support wide_form table to write")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("import")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token namespace"}},[t._v("org"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("apache"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("iotdb"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("tsfile"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")])]),t._v("_\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("val")]),t._v(" df "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" spark"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("read"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("tsfile"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hdfs://localhost:9000/test.tsfile"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" \ndf"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("show\ndf"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("write"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("tsfile"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hdfs://localhost:9000/output"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("val")]),t._v(" newDf "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" spark"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("read"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("tsfile"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"hdfs://localhost:9000/output"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nnewDf"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("show\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br"),s("span",{staticClass:"line-number"},[t._v("7")]),s("br"),s("span",{staticClass:"line-number"},[t._v("8")]),s("br"),s("span",{staticClass:"line-number"},[t._v("9")]),s("br")])]),s("h2",{attrs:{id:"附录a-模式推断的旧设计"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#附录a-模式推断的旧设计"}},[t._v("#")]),t._v(" 附录A:模式推断的旧设计")]),t._v(" "),s("p",[t._v("显示TsFile的方式与TsFile Schema有关。 以以下TsFile结构为例:TsFile架构中有三个度量:状态,温度和硬件。 这三个度量的基本信息如下:")]),t._v(" "),s("center",[s("table",{staticStyle:{"text-align":"center"}},[s("tr",[s("th",{attrs:{colspan:"2"}},[t._v("名称")]),s("th",{attrs:{colspan:"2"}},[t._v("类型")]),s("th",{attrs:{colspan:"2"}},[t._v("编码")])]),t._v(" "),s("tr",[s("td",{attrs:{colspan:"2"}},[t._v("status")]),s("td",{attrs:{colspan:"2"}},[t._v("Boolean")]),s("td",{attrs:{colspan:"2"}},[t._v("PLAIN")])]),t._v(" "),s("tr",[s("td",{attrs:{colspan:"2"}},[t._v("temperature")]),s("td",{attrs:{colspan:"2"}},[t._v("Float")]),s("td",{attrs:{colspan:"2"}},[t._v("RLE")])]),t._v(" "),s("tr",[s("td",{attrs:{colspan:"2"}},[t._v("hardware")]),s("td",{attrs:{colspan:"2"}},[t._v("Text")]),s("td",{attrs:{colspan:"2"}},[t._v("PLAIN")])])]),t._v(" "),s("span",[t._v("测量的基本信息")])]),t._v(" "),s("p",[t._v("文件中的现有数据如下:")]),t._v(" "),s("center",[s("table",{staticStyle:{"text-align":"center"}},[s("tr",[s("th",{attrs:{colspan:"4"}},[t._v("delta\\_object:root.ln.wf01.wt01")]),s("th",{attrs:{colspan:"4"}},[t._v("delta\\_object:root.ln.wf02.wt02")]),s("th",{attrs:{colspan:"4"}},[t._v("delta\\_object:root.sgcc.wf03.wt01")])]),t._v(" "),s("tr",[s("th",{attrs:{colspan:"2"}},[t._v("status")]),s("th",{attrs:{colspan:"2"}},[t._v("temperature")]),s("th",{attrs:{colspan:"2"}},[t._v("hardware")]),s("th",{attrs:{colspan:"2"}},[t._v("status")]),s("th",{attrs:{colspan:"2"}},[t._v("status")]),s("th",{attrs:{colspan:"2"}},[t._v("temperature")])]),t._v(" "),s("tr",[s("th",[t._v("time")]),s("th",[t._v("value")]),s("th",[t._v("time")]),s("th",[t._v("value")]),s("th",[t._v("time")]),s("th",[t._v("value")]),s("th",[t._v("time")]),s("th",[t._v("value")]),s("th",[t._v("time")]),s("th",[t._v("value")]),s("th",[t._v("time")]),s("th",[t._v("value")])]),t._v(" "),s("tr",[s("td",[t._v("1")]),s("td",[t._v("True")]),s("td",[t._v("1")]),s("td",[t._v("2.2")]),s("td",[t._v("2")]),s("td",[t._v('"aaa"')]),s("td",[t._v("1")]),s("td",[t._v("True")]),s("td",[t._v("2")]),s("td",[t._v("True")]),s("td",[t._v("3")]),s("td",[t._v("3.3")])]),t._v(" "),s("tr",[s("td",[t._v("3")]),s("td",[t._v("True")]),s("td",[t._v("2")]),s("td",[t._v("2.2")]),s("td",[t._v("4")]),s("td",[t._v('"bbb"')]),s("td",[t._v("2")]),s("td",[t._v("False")]),s("td",[t._v("3")]),s("td",[t._v("True")]),s("td",[t._v("6")]),s("td",[t._v("6.6")])]),t._v(" "),s("tr",[s("td",[t._v("5")]),s("td",[t._v(" False ")]),s("td",[t._v("3")]),s("td",[t._v("2.1")]),s("td",[t._v("6")]),s("td",[t._v('"ccc"')]),s("td",[t._v("4")]),s("td",[t._v("True")]),s("td",[t._v("4")]),s("td",[t._v("True")]),s("td",[t._v("8")]),s("td",[t._v("8.8")])]),t._v(" "),s("tr",[s("td",[t._v("7")]),s("td",[t._v(" True ")]),s("td",[t._v("4")]),s("td",[t._v("2.0")]),s("td",[t._v("8")]),s("td",[t._v('"ddd"')]),s("td",[t._v("5")]),s("td",[t._v("False")]),s("td",[t._v("6")]),s("td",[t._v("True")]),s("td",[t._v("9")]),s("td",[t._v("9.9")])])]),t._v(" "),s("span",[t._v("A set of time-series data")])]),t._v(" "),s("p",[t._v("有两种显示方法:")]),t._v(" "),s("h4",{attrs:{id:"默认方式"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#默认方式"}},[t._v("#")]),t._v(" 默认方式")]),t._v(" "),s("p",[t._v("将创建两列来存储设备的完整路径:time(LongType)和delta_object(StringType)。")]),t._v(" "),s("ul",[s("li",[s("code",[t._v("time")]),t._v(" : Timestamp, LongType")]),t._v(" "),s("li",[s("code",[t._v("delta_object")]),t._v(" : Delta_object ID, StringType")])]),t._v(" "),s("p",[t._v("接下来,为每个度量创建一列以存储特定数据。 SparkSQL表结构如下:")]),t._v(" "),s("center",[s("table",{staticStyle:{"text-align":"center"}},[s("tr",[s("th",[t._v("time(LongType)")]),s("th",[t._v(" delta\\_object(StringType)")]),s("th",[t._v("status(BooleanType)")]),s("th",[t._v("temperature(FloatType)")]),s("th",[t._v("hardware(StringType)")])]),t._v(" "),s("tr",[s("td",[t._v("1")]),s("td",[t._v(" root.ln.wf01.wt01 ")]),s("td",[t._v("True")]),s("td",[t._v("2.2")]),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("1")]),s("td",[t._v(" root.ln.wf02.wt02 ")]),s("td",[t._v("True")]),s("td",[t._v("null")]),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("2")]),s("td",[t._v(" root.ln.wf01.wt01 ")]),s("td",[t._v("null")]),s("td",[t._v("2.2")]),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("2")]),s("td",[t._v(" root.ln.wf02.wt02 ")]),s("td",[t._v("False")]),s("td",[t._v("null")]),s("td",[t._v('"aaa"')])]),t._v(" "),s("tr",[s("td",[t._v("2")]),s("td",[t._v(" root.sgcc.wf03.wt01 ")]),s("td",[t._v("True")]),s("td",[t._v("null")]),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("3")]),s("td",[t._v(" root.ln.wf01.wt01 ")]),s("td",[t._v("True")]),s("td",[t._v("2.1")]),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("3")]),s("td",[t._v(" root.sgcc.wf03.wt01 ")]),s("td",[t._v("True")]),s("td",[t._v("3.3")]),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("4")]),s("td",[t._v(" root.ln.wf01.wt01 ")]),s("td",[t._v("null")]),s("td",[t._v("2.0")]),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("4")]),s("td",[t._v(" root.ln.wf02.wt02 ")]),s("td",[t._v("True")]),s("td",[t._v("null")]),s("td",[t._v('"bbb"')])]),t._v(" "),s("tr",[s("td",[t._v("4")]),s("td",[t._v(" root.sgcc.wf03.wt01 ")]),s("td",[t._v("True")]),s("td",[t._v("null")]),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("5")]),s("td",[t._v(" root.ln.wf01.wt01 ")]),s("td",[t._v("False")]),s("td",[t._v("null")]),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("5")]),s("td",[t._v(" root.ln.wf02.wt02 ")]),s("td",[t._v("False")]),s("td",[t._v("null")]),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("5")]),s("td",[t._v(" root.sgcc.wf03.wt01 ")]),s("td",[t._v("True")]),s("td",[t._v("null")]),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("6")]),s("td",[t._v(" root.ln.wf02.wt02 ")]),s("td",[t._v("null")]),s("td",[t._v("null")]),s("td",[t._v('"ccc"')])]),t._v(" "),s("tr",[s("td",[t._v("6")]),s("td",[t._v(" root.sgcc.wf03.wt01 ")]),s("td",[t._v("null")]),s("td",[t._v("6.6")]),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("7")]),s("td",[t._v(" root.ln.wf01.wt01 ")]),s("td",[t._v("True")]),s("td",[t._v("null")]),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("8")]),s("td",[t._v(" root.ln.wf02.wt02 ")]),s("td",[t._v("null")]),s("td",[t._v("null")]),s("td",[t._v('"ddd"')])]),t._v(" "),s("tr",[s("td",[t._v("8")]),s("td",[t._v(" root.sgcc.wf03.wt01 ")]),s("td",[t._v("null")]),s("td",[t._v("8.8")]),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("9")]),s("td",[t._v(" root.sgcc.wf03.wt01 ")]),s("td",[t._v("null")]),s("td",[t._v("9.9")]),s("td",[t._v("null")])])])]),t._v(" "),s("h4",{attrs:{id:"展开delta-object列"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#展开delta-object列"}},[t._v("#")]),t._v(" 展开delta_object列")]),t._v(" "),s("p",[t._v("用“。”展开设备列。 分成多个列,忽略根目录“ root”。 方便进行更丰富的聚合操作。 如果用户希望使用这种显示方式,则需要在表创建语句中设置参数“ delta \\ _object \\ _name”(请参阅本手册第5.1节中的示例5),如本示例中的那样,参数“ delta \\ _object \\ _name“设置为” root.device.turbine“。 路径层的数量必须是一对一的。 此时,将为设备路径的每一层(“根”层除外)创建一列。 列名是参数中的名称,值是设备相应层的名称。 接下来,将为每个度量创建一列以存储特定数据。")]),t._v(" "),s("p",[t._v("然后,SparkSQL表结构如下:")]),t._v(" "),s("center",[s("table",{staticStyle:{"text-align":"center"}},[s("tr",[s("th",[t._v("time(LongType)")]),s("th",[t._v(" group(StringType)")]),s("th",[t._v(" field(StringType)")]),s("th",[t._v(" device(StringType)")]),s("th",[t._v("status(BooleanType)")]),s("th",[t._v("temperature(FloatType)")]),s("th",[t._v("hardware(StringType)")])]),t._v(" "),s("tr",[s("td",[t._v("1")]),s("td",[t._v(" ln ")]),s("td",[t._v(" wf01 ")]),s("td",[t._v(" wt01 ")]),s("td",[t._v("True")]),s("td",[t._v("2.2")]),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("1")]),s("td",[t._v(" ln ")]),s("td",[t._v(" wf02 ")]),s("td",[t._v(" wt02 ")]),s("td",[t._v("True")]),s("td",[t._v("null")]),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("2")]),s("td",[t._v(" ln ")]),s("td",[t._v(" wf01 ")]),s("td",[t._v(" wt01 ")]),s("td",[t._v("null")]),s("td",[t._v("2.2")]),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("2")]),s("td",[t._v(" ln ")]),s("td",[t._v(" wf02 ")]),s("td",[t._v(" wt02 ")]),s("td",[t._v("False")]),s("td",[t._v("null")]),s("td",[t._v('"aaa"')])]),t._v(" "),s("tr",[s("td",[t._v("2")]),s("td",[t._v(" sgcc ")]),s("td",[t._v(" wf03 ")]),s("td",[t._v(" wt01 ")]),s("td",[t._v("True")]),s("td",[t._v("null")]),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("3")]),s("td",[t._v(" ln ")]),s("td",[t._v(" wf01 ")]),s("td",[t._v(" wt01 ")]),s("td",[t._v("True")]),s("td",[t._v("2.1")]),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("3")]),s("td",[t._v(" sgcc ")]),s("td",[t._v(" wf03 ")]),s("td",[t._v(" wt01 ")]),s("td",[t._v("True")]),s("td",[t._v("3.3")]),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("4")]),s("td",[t._v(" ln ")]),s("td",[t._v(" wf01 ")]),s("td",[t._v(" wt01 ")]),s("td",[t._v("null")]),s("td",[t._v("2.0")]),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("4")]),s("td",[t._v(" ln ")]),s("td",[t._v(" wf02 ")]),s("td",[t._v(" wt02 ")]),s("td",[t._v("True")]),s("td",[t._v("null")]),s("td",[t._v('"bbb"')])]),t._v(" "),s("tr",[s("td",[t._v("4")]),s("td",[t._v(" sgcc ")]),s("td",[t._v(" wf03 ")]),s("td",[t._v(" wt01 ")]),s("td",[t._v("True")]),s("td",[t._v("null")]),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("5")]),s("td",[t._v(" ln ")]),s("td",[t._v(" wf01 ")]),s("td",[t._v(" wt01 ")]),s("td",[t._v("False")]),s("td",[t._v("null")]),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("5")]),s("td",[t._v(" ln ")]),s("td",[t._v(" wf02 ")]),s("td",[t._v(" wt02 ")]),s("td",[t._v("False")]),s("td",[t._v("null")]),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("5")]),s("td",[t._v(" sgcc ")]),s("td",[t._v(" wf03 ")]),s("td",[t._v(" wt01 ")]),s("td",[t._v("True")]),s("td",[t._v("null")]),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("6")]),s("td",[t._v(" ln ")]),s("td",[t._v(" wf02 ")]),s("td",[t._v(" wt02 ")]),s("td",[t._v("null")]),s("td",[t._v("null")]),s("td",[t._v('"ccc"')])]),t._v(" "),s("tr",[s("td",[t._v("6")]),s("td",[t._v(" sgcc ")]),s("td",[t._v(" wf03 ")]),s("td",[t._v(" wt01 ")]),s("td",[t._v("null")]),s("td",[t._v("6.6")]),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("7")]),s("td",[t._v(" ln ")]),s("td",[t._v(" wf01 ")]),s("td",[t._v(" wt01 ")]),s("td",[t._v("True")]),s("td",[t._v("null")]),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("8")]),s("td",[t._v(" ln ")]),s("td",[t._v(" wf02 ")]),s("td",[t._v(" wt02 ")]),s("td",[t._v("null")]),s("td",[t._v("null")]),s("td",[t._v('"ddd"')])]),t._v(" "),s("tr",[s("td",[t._v("8")]),s("td",[t._v(" sgcc ")]),s("td",[t._v(" wf03 ")]),s("td",[t._v(" wt01 ")]),s("td",[t._v("null")]),s("td",[t._v("8.8")]),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("9")]),s("td",[t._v(" sgcc ")]),s("td",[t._v(" wf03 ")]),s("td",[t._v(" wt01 ")]),s("td",[t._v("null")]),s("td",[t._v("9.9")]),s("td",[t._v("null")])])])]),t._v(" "),s("p",[t._v("TsFile-Spark-Connector可以在SparkSQL By SparkSQL中将一个或多个TsFiles显示为表。 它还允许用户指定一个目录或使用通配符来匹配多个目录。 如果有多个TsFile,则所有TsFile中的度量的并集将保留在表中,并且具有相同名称的度量默认情况下将具有相同的数据类型。 请注意,如果存在名称相同但数据类型不同的情况,则TsFile-Spark-Connector将无法保证结果的正确性。")]),t._v(" "),s("p",[t._v("写入过程是将一个DataFrame写入一个或多个TsFiles。 默认情况下,需要包括两列:time和delta_object。 其余的列用作“度量”。 如果用户想将第二个表结构写回到TsFile,则可以设置“ delta \\ _object \\ _name”参数(请参阅本手册5.1节的5.1节)。")]),t._v(" "),s("h2",{attrs:{id:"附录b-旧注"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#附录b-旧注"}},[t._v("#")]),t._v(" 附录B:旧注")]),t._v(" "),s("p",[t._v("注意:检查Spark根目录中的jar软件包,并分别用libthrift-0.9.1.jar和libfb303-0.9.1.jar替换libthrift-0.9.3.jar和libfb303-0.9.3.jar。")])],1)}),[],!1,null,null,null);s.default=e.exports}}]);