【问题标题】:Issue with load data into HIVE将数据加载到 HIVE 的问题
【发布时间】:2015-06-12 11:14:52
【问题描述】:

我们在 AWS 中启动了两个 EMR,并在一个 EMR 中安装了 hadoop 和 hive-0.11.0,在另一个 EMR 中安装了 hive-0.13.1。

一切似乎都工作正常,但是在尝试将数据加载到 TABLE 时,它给出了以下错误,并且它在两个 Hive 服务器中都发生了。

错误信息:

执行SQL命令时出错:load data inpath 's3://buckername/export/employee_1/'入表employee_2查询 返回非零代码:10028,原因:失败:SemanticException [错误 10028]:行 1:17 路径不合法 ''s3://buckername/export/employee_1/'':移动自: s3://buckername/export/employee_1 到: hdfs://XXX.XX.XXX.XX:X000/mnt/hive_0110/warehouse/employee_2 不是 有效的。请检查参数“default.fs.name”的值和 “hive.metastore.warehouse.dir”不冲突。 [SQL 状态=42000,数据库 错误代码=10028]

我搜索了这条消息的原因和含义,我找到了这个link,但是当尝试执行给定link 中建议的命令时,它也给出了以下错误。

命令:

--service metatool -updateLocation hdfs://XXX.XX.XXX.XX:X000 hdfs://XXX.XX.XXX.XX:X000

正在初始化 HiveMetaTool.. HiveMetaTool:解析失败。原因: 无法识别的选项:-hiveconf

对此的任何帮助将不胜感激。

【问题讨论】:

    标签: hadoop amazon-web-services hive emr


    【解决方案1】:

    LOAD 不支持 S3。最佳做法是将数据保留在 S3 中并仅将其用作 Hive 外部表,而不是将数据复制到 HDFS。一些参考http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-hive-additional-features.htmlWhen you create an external table in Hive with an S3 location is the data transfered?

    【讨论】:

    • 是的,你是对的。我还与 AWS Support 团队讨论过,他们说这是运行中的已知问题。 AWS 不支持来自 S3 的 LOAD。
    • 有什么方法可以将 S3 文件复制到远程 hadoop (HDFS) 集群中。这样我们就可以使用 Hive 从那里加载。
    • 您可以使用 distcp 或 EMR 的 s3distcp 将内容从 S3 复制到 HDFS。然后使用指向 HDFS 的外部表。
    【解决方案2】:

    如果您在 Hadoop 集群上安装了 hive,则 hive 数据的默认存储为 HDFS (hive.metastore.warehouse.dir=/user/hive/warehouse)。

    作为一种解决方法,您可以将文件从 S3 文件系统复制到 HDFS,然后从 HDFS 将文件加载到 hive。

    很可能我们可能需要修改参数“hive.exim.uri.scheme.whitelist=hdfs,pfile”以从 S3 文件系统加载数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-08
      • 2015-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多