gpt4 book ai didi

csv - 如何使用外部架构(如 Avro)将 CSV 文件导入 HIVE?

转载 作者:可可西里 更新时间:2023-11-01 16:46:36 27 4
gpt4 key购买 nike

我正在将压缩的 csv 类日志文件(分隔符分隔,无标题)导入 HDFS,并希望使用 HIVE 聚合它们。但是,我喜欢将(声明性)模式与聚合查询分开的想法,因为这是一种跟踪模式历史的简洁方法。

是否有一种(直接)方法可以使用外部架构(如 Avro)将 csv 文件导入 HIVE?如果没有,是否有更好的方法分两步完成,还是我只能在 HQL 中指定文件结构?

到目前为止,我尝试在 HIVE 中同时使用 Avro 和 CSV 序列化,但没有成功。

我的 csv 文件 test.log.gz 看起来像这样

val0|val1|val2||val3
val4|val5|val6||val7

我创建了一个 Avro 模式 test.avsc

{
"type": "record",
"namespace": "test",
"name": "TestFile",
"fields": [
{ "name": "field0" , "type": "string", "doc": "Field 0" },
{ "name": "field1" , "type": "string", "doc": "Field 1" },
{ "name": "field2" , "type": "null", "doc": "N/A" },
{ "name": "field3" , "type": "string", "doc": "Field 3" }
]
}

我想这样做的原因是,我可以为(长)文件规范提供一个单独的位置,其中还包括以可读格式对字段的描述。

更新 1:

我也在考虑事先将 CSV 文件转换为 Avro 格式。但是,我发现 this is also done via HIVE .使用 Avro tools通过命令行非常适合 JSON,但不适用于 CSV。

最佳答案

我最终使用 Apache Kite 完成了这项工作,一个很好的教程可以在kitesdk.org上找到.

首先,您需要从 Avro 模式创建一个 Hive 表:

kite-dataset create sandwiches -s sandwich.avsc

然后就可以将csv数据导入到表格中了。

kite-dataset csv-import sandwiches.csv sandwiches

这让我可以为我的资源声明和版本模式,并从命令行将 csv 文件导入 Hive。

关于csv - 如何使用外部架构(如 Avro)将 CSV 文件导入 HIVE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36578598/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com