json - 更改 Hive 中的 Derby Metastore 以允许具有 >4000B 定义的结构

标签 json hadoop amazon-web-services hive derby

我们正在创建一个 Hive 模式来读取大量 JSON 文件。我们的 JSON 模式相当大,我们发现 Hive 的默认 Metastore 模式不能按原样为我们工作。

具体来说,我们架构中的一个字段中有大约 17KiB 的嵌套结构。不幸的是,对于存储结果定义的字段,Hive 似乎有 varchar(4000) 的限制(在此处查看 Derby 模式 def ~v0.10):

CREATE TABLE "COLUMNS_V2" (
"CD_ID" bigint NOT NULL,
"COMMENT" varchar(4000),
"COLUMN_NAME" varchar(128) NOT NULL,
"TYPE_NAME" varchar(4000),
"INTEGER_IDX" INTEGER NOT NULL,
PRIMARY KEY ("CD_ID", "COLUMN_NAME")
);

我们在 Amazon EC2/MapReduce 上运行它(v0.11,默认 Derby metastore)

因此,我们最初的问题是: • TYPE_NAME 被限制为 4000 是否有原因(IIUC,Derby 上的 varchar 可以增长到 32672,这在很长一段时间内都足够了) • 我们能否在不破解/重新安装 Hive 的情况下更改 metastore 架构(这会使使用 AWS 的自动化变得复杂)? • 如果是这样,是否有适当/首选的方法来更新所有节点上的架构?

提前致谢!

最佳答案

是的,您可以更改 TYPE_NAME 的数据类型。如果您有多节点集群,我会建议您使用 MySQL 作为配置单元元存储。可以找到更多相关信息 here

关于json - 更改 Hive 中的 Derby Metastore 以允许具有 >4000B 定义的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25269729/

相关文章:

java - 将数据填充到 RecyclerView 中

javascript - 如何在 JavaScript 中比较日期和字符串?

scala - Spark:ForeachRDD,跳过行引发任务不可序列化(scala闭包)

hadoop - 无法在 HDP 2.5.0 中对 Oozie 运行 Spark 操作(java.lang.IllegalArgumentException : Invalid ContainerId)

hadoop - hadoop mapreduce.partition.keypartitioner.options不起作用

python - Elasticsearch TransportError(400, 'mapper_parsing_exception')

java - 如何一次从 SQS 队列中删除所有消息 Java

java - 如何将 JSON 读取到 java 中的通用对象列表?

javascript - 使用 JSON 数据的 Highcharts 图表空白

amazon-web-services - 将排序后的数据一次性大量导入 Dynamo DB 有哪些经济高效的选项?