Hive 导入与导入 AVRO 格式不兼容
Posted
技术标签:
【中文标题】Hive 导入与导入 AVRO 格式不兼容【英文标题】:Hive import is not compatible with importing into AVRO format 【发布时间】:2018-02-23 11:25:11 【问题描述】:我有以下代码:
sqoop import --connect jdbc:mysql://localhost/export \
--username root \
--password cloudera \
--table cust \
--hive-import \
--create-hive-table \
--fields-terminated-by ' ' \
--hive-table default.cust \
--target-dir /user/hive/warehouse/cust \
--compression-codec org.apache.org.io.compress.GzipCodec \
--as-avrodatafile \
-m 1
出现以下错误,请帮忙。 。
【问题讨论】:
您好,您可以粘贴您的 cust 表示例数据吗?和错误日志? Hive 不支持从 sqoop 导入 avro 文件格式。 【参考方案1】:目前,Sqoop 不支持将 AVRO 格式直接导入到 HIVE 表中,作为一种变通方法,您可以导入 HDFS 并在 HIVE 中创建 EXTERNAL TABLE
第 1 步:导入 hdfs
sqoop 导入 --connect jdbc:mysql://localhost/export \
--username root --password cloudera --表客户\ --target-dir /user/hive/warehouse/cust \ --compression-codec org.apache.org.io.compress.GzipCodec \ --as-avrodatafile -m 1
此导入将在当前目录 (Linux) 中创建一个扩展名为 .avsc 的架构文件。将此文件复制到 HDFS 中的某个位置 (PATH_TO_THE_COPIED_SCHEMA)。
第 2 步:在 HIVE 中创建一个外部表,如
创建外部表客户 存储为 AVRO 位置'hdfs:///user/hive/warehouse/cust' TBLPROPERTIES ('avro.schema.url'='hdfs:///PATH_TO_THE_COPIED_SCHEMA/cust.avsc');
【讨论】:
以上是关于Hive 导入与导入 AVRO 格式不兼容的主要内容,如果未能解决你的问题,请参考以下文章
Sqoop - 使用 Avro 格式将表从 Oracle 导入 Hive 的最佳选择是啥?
Sqoop 导入具有 avro 格式的换行符的数据,然后使用 hive 查询