【问题标题】:Create Hive table and insert data from xls file创建 Hive 表并从 xls 文件插入数据
【发布时间】:2023-04-03 14:48:01
【问题描述】:

我从我的主管那里得到了一个项目任务,他声称可以在 HDInsight(适用于 Windows)中使用 Hive 来查询两种不同的文件类型,然后从中提取数据。其中一个文件是 .xls,另一个是 .csv 文件。

我已经设法使用 VS 将这两个文件上传到 Hadoop 集群,然后尝试从 .xls 文件创建 Hive 表(之前我使用教程使用 .csv 文件在 Hive 上工作得很好)但是使用.xls 文件我在尝试时经常收到“失败”错误。

我尝试了以下示例代码来创建表格、分隔、字段终止(我尝试了几个都没有成功)、文件类型(也不确定这里还可以使用什么)和目标位置。

DROP TABLE IF EXISTS table1;

CREATE EXTERNAL TABLE IF NOT EXISTS table1(id int, postcde int, city string) 
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY ' ' 
    STORED AS TEXTFILE LOCATION 'wasb://container@resourcegroup.blob.core.windows.net/folder1/data.xls/'

我不确定这是否可能,因为这里对类似问题的回答似乎相互矛盾,但根据我的主管的说法,应该有可能使用 Hive 执行此操作 - 无需在上传到 Hadoop 之前将文件类型转换为相同的格式!

https://community.hortonworks.com/questions/31968/hi-is-there-a-way-to-load-xlsx-file-into-hive-tabl.html

【问题讨论】:

    标签: excel csv hadoop hive hiveql


    【解决方案1】:

    我认为您不能将 excel 文件指定为表格的位置。

    Hive 可以将数据保存在 HDFS (https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL) 或

    S3 存储 (http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-hive-additional-features.html)

    Hive 不直接支持 EXCEL 格式,所以你必须将 excel 文件转换为分隔格式文件,然后使用 load 命令将文件上传到 Hive(或 HDFS)。

    【讨论】:

    • @Yang Bryan 感谢您的回复。我认为你说的是​​对的。我刚刚偶然发现了另一个链接,该链接指示了将 .xls 格式的数据读取到此 link 下的 Hive 表中的另外两个选项,但似乎没有“直接”的方式来执行此操作。我试图支持你的回复,但由于我没有足够的代表,所以它不会被看到。再次感谢您的时间和帮助。
    【解决方案2】:

    HadoopOffice 库有一个 Hive 模块(除了一个用于 Hadoop/Spark/Flink 的模块),它允许在 Hive 中使用具有各种功能的 Excel 文件(.xlsx、.xls): https://github.com/ZuInnoTe/hadoopoffice/wiki

    【讨论】:

      猜你喜欢
      • 2018-02-19
      • 1970-01-01
      • 1970-01-01
      • 2010-09-25
      • 1970-01-01
      • 1970-01-01
      • 2012-11-04
      • 1970-01-01
      • 2022-07-19
      相关资源
      最近更新 更多