在 HDFS 上基于 csv 文件创建外部配置单元表的最佳实践是啥,标题中有 618 列?

Posted

技术标签:

【中文标题】在 HDFS 上基于 csv 文件创建外部配置单元表的最佳实践是啥,标题中有 618 列?【英文标题】:what's the best practice to create an external hive table based on a csv file on HDFS with 618 columns in header?在 HDFS 上基于 csv 文件创建外部配置单元表的最佳实践是什么,标题中有 618 列? 【发布时间】:2018-07-23 19:22:10 【问题描述】:

由于数据的大小,这个问题与我在 *** 上发现的不同,它不是重复的。

我们正在使用 Cloudera。

我已经看到了针对标题中只有少数列的小型 xlsx 文件的解决方案,在我的情况下,要加载到新配置单元表中的 csv 文件有 618 列。

    如果我通过HUE->文件浏览器上传(先保存到csv),会默认保存为parquet吗?如果没有,我在哪里可以指定文件格式?

    根据该位置创建外部 Impala 表的最佳方法是什么?如果我需要手动创建 DDL/schema,因为有这么多列,那肯定是难以置信的。

非常感谢。

【问题讨论】:

我发现“绝对令人难以置信”的是,您不能仅使用标题记录通过几行脚本生成 CREATE TABLE。例如,一个普通的 Linux head -n 1 turd.csv | sed 's/,/ String,\n/g' 命令可以将标题拆分为 618 行,并在每个列名之后附加 " String,"。其余的都是微不足道的。 【参考方案1】:

答案:

文本文件是通过 Hive 表生成的默认文件格式。但它可以在hive.default.fileformat 进行配置,或者您可以在创建表时明确提及它。您可以将 CSV 文件上传到 HDFS 中所需的任何目录。一旦数据存在于 HDFS 中,您就可以在 CSV 数据上创建一个表。创建表格时,您可以指定格式。 使用 Hue 创建表格。它根据 CSV 文件中的标题行动态生成列名。它假定每个字段都是字符串数据类型。我们需要明确地处理数据类型。在 hive metastore 中创建表后,可以通过 Hive 和 Impala 查询使用该表。

这篇文章将提供一个良好的开端: http://gethue.com/hadoop-tutorial-create-hive-tables-with-headers-and/

简而言之, 将数据移至(如下图)

HDFS => 使用 Hue 创建表(注意数据类型) => 现在查询 使用 Impala 编辑器获取数据。

【讨论】:

谢谢,需要的是如何将HDFS上的文件默认保存为parquet,如果我将默认更改为hive.default.fileformat = Parquet,更新后的文件是否会自动保存为parquet?跨度>

以上是关于在 HDFS 上基于 csv 文件创建外部配置单元表的最佳实践是啥,标题中有 618 列?的主要内容,如果未能解决你的问题,请参考以下文章

从 HDFS 中的数据文件夹在配置单元中创建表 - 删除重复的行

需要写访问权限的配置单元外部表

如何在 csv 文件中忽略带引号的换行符以创建 Hive 外部表?

从以 orc 格式存储在 hdfs 中的文件创建配置单元表

在存储在 hdfs 中的 orc 文件上创建外部表后,select * 返回时间戳的空值

Pig 使用 LOAD 覆盖配置单元中的数据