TsFile-Hive-Connector 用户指南
关于 TsFile-Hive-Connector
TsFile-Hive-Connector 实现了 Hive 对 Tsfile 类型的外部数据源的支持。这使用户能够按Hive操作Tsfile。
使用此连接器,您可以
- 将单个 TsFile 从本地文件系统或 hdfs 加载到 hive 中
- 将特定目录中的所有文件(从本地文件系统或 hdfs)加载到 hive 中
- 通过 HQL 查询 tsfile。
- 截至目前,配置单元连接器不支持写入操作。因此,通过配置单元操作 tsfile 时,不允许在 HQL 中进行插入操作。
System Requirements
Hadoop Version | Hive Version | Java Version | TsFile |
|
|
|
|
Data Type Correspondence
TsFile data type | Hive field type |
BOOLEAN | Boolean |
INT32 | INT |
INT64 | BIGINT |
FLOAT | Float |
DOUBLE | Double |
TEXT | STRING |
为 Hive 添加依赖项
要在 hive 中使用 hive-connector,我们应该将 hive-connector jar 添加到 hive 中。您可以使用 的命令获取 .mvn clean package -pl hive-connector -am -Dmaven.test.skip=true
hive-connector-X.X.X-jar-with-dependencies.jar
然后在 hive 中,使用 的命令添加依赖项。例如:add jar XXX
hive> add jar /Users/hive/incubator-iotdb/hive-connector/target/hive-connector-0.10.0-jar-with-dependencies.jar;
Added [/Users/hive/incubator-iotdb/hive-connector/target/hive-connector-0.10.0-jar-with-dependencies.jar] to class path
Added resources: [/Users/hive/incubator-iotdb/hive-connector/target/hive-connector-0.10.0-jar-with-dependencies.jar]
创建 Tsfile 支持的 Hive 表
要创建支持 Tsfile 的表,请指定 as 、 指定 as 和 as 。serde
org.apache.iotdb.hive.TsFileSerDe
inputformat
org.apache.iotdb.hive.TSFHiveInputFormat
outputformat
org.apache.iotdb.hive.TSFHiveOutputFormat
还要提供一个仅包含两个字段的架构:和表。 是时间序列的时间值,是要从 TSFILE 提取到 Hive 的传感器的名称,例如 。表的名称可以是 hive 中的任何有效表名称。time_stamp
sensor_id
time_stamp
sensor_id
sensor_1
此外,提供配置单元连接器将从中提取表的最新数据的位置。
该位置必须是特定的目录,如果您已设置Hadoop,它可以位于本地文件系统或HDFS上。如果它位于本地文件系统中,则位置应如下所示file:///data/data/sequence/root.baic2.WWS.leftfrontdoor/
最后,您应该将 in 设置为要分析的设备名称。device_id
TBLPROPERTIES
例如:
CREATE EXTERNAL TABLE IF NOT EXISTS only_sensor_1(
time_stamp TIMESTAMP,
sensor_1 BIGINT)
ROW FORMAT SERDE 'org.apache.iotdb.hive.TsFileSerDe'
STORED AS
INPUTFORMAT 'org.apache.iotdb.hive.TSFHiveInputFormat'
OUTPUTFORMAT 'org.apache.iotdb.hive.TSFHiveOutputFormat'
LOCATION '/data/data/sequence/root.baic2.WWS.leftfrontdoor/'
TBLPROPERTIES ('device_id'='root.baic2.WWS.leftfrontdoor.plc1');
在此示例中,我们将从 的目录中提取 的数据。此表可能会导致如下说明:root.baic2.WWS.leftfrontdoor.plc1.sensor_1
/data/data/sequence/root.baic2.WWS.leftfrontdoor/
hive> describe only_sensor_1;
OK
time_stamp timestamp from deserializer
sensor_1 bigint from deserializer
Time taken: 0.053 seconds, Fetched: 2 row(s)
此时,可以在 Hive 中像处理任何其他表一样处理 Tsfile 支持的表。
从 Tsfile 支持的 Hive 表查询
在执行任何查询之前,我们应该通过执行以下命令来设置 in hive。hive.input.format
hive> set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;
现在,我们已经有了一个在 hive 中命名的外部表。我们可以通过 HQL 使用任何查询操作来分析它。only_sensor_1
例如:
选择子句示例
hive> select * from only_sensor_1 limit 10;
OK
1000000
1000001
1000002
1000003
1000004
1000005
1000006
1000007
1000008
1000009
Time taken: 1.464 seconds, Fetched: 10 row(s)
聚合子句示例
hive> select count(*) from only_sensor_1;
WARNING: Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
Query ID = jackietien_20191016202416_d1e3e233-d367-4453-b39a-2aac9327a3b6
Total jobs = 1
Launching Job 1 out of 1
Number of reduce tasks determined at compile time: 1
In order to change the average load for a reducer (in bytes):
set hive.exec.reducers.bytes.per.reducer=<number>
In order to limit the maximum number of reducers:
set hive.exec.reducers.max=<number>
In order to set a constant number of reducers:
set mapreduce.job.reduces=<number>
Job running in-process (local Hadoop)
2019-10-16 20:24:18,305 Stage-1 map = 0%, reduce = 0%
2019-10-16 20:24:27,443 Stage-1 map = 100%, reduce = 100%
Ended Job = job_local867757288_0002
MapReduce Jobs Launched:
Stage-Stage-1: HDFS Read: 0 HDFS Write: 0 SUCCESS
Total MapReduce CPU Time Spent: 0 msec
OK
1000000
Time taken: 11.334 seconds, Fetched: 1 row(s)
标签:iotdb,jar,hive,connector,IoTDB,Hive,Apache,sensor
From: https://blog.51cto.com/u_15123639/7385159