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 查询

AVRO 模式可选字段不兼容

将.avro文件中的数据导入hive表

在 oozie 工作流中读取 avro 数据文件时出错 - 类与新地图 API 模式不兼容

如果字段顺序更改,Avro 模式不兼容