首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何读取JSON数组这样的复杂数据类型并使用Java中的Spark加载到Hive表中

问如何读取JSON数组这样的复杂数据类型并使用Java中的Spark加载到Hive表中
EN

Stack Overflow用户
提问于 2019-10-30 19:21:55
回答 1查看 1K关注 0票数 0

我有一个数据集,它具有简单(字符串)和复杂数据类型的组合,用管道分隔。

代码语言:javascript
复制
1111|1234567891011|ABC11|JOSE|"linkEnrollment": {"Group": [{"action": "ADD","groupType": "ROSS","groupId": "GRP-1","isValid": "Y"},{"action": "ADD","groupType": "CROSS","groupId": "GRP-2","isValid": " "}]}
2222|9876543256827|ABC22|JACK|"linkEnrollment": {"Group": [{"action": "DEL","groupType": "ROCK","groupId": "GRP-7","isValid": "N"}]}

相应的栏是:

代码语言:javascript
复制
UUID(String)|PID(String)|DEVID(String)|FIRSTNAME(String)|LINK(String which is a JSON)

我的要求是我需要使用Spark将这些数据加载到一个Hive表中。我需要知道:

  1. 如何读取上述数据并转换为数据格式(使用StructType模式)以插入到Hive表中。
  2. 如何将链接列数据加载到Hive表中,它在表中的数据类型是什么。

。

EN

回答 1

Stack Overflow用户

发布于 2019-10-30 19:30:25

可以使用Spark加载程序读取您的文件

代码语言:javascript
复制
Dataset<Row> ds = spark.read().format("csv")
 .option("sep", "|")
 .option("inferSchema", "true")
 .option("header", "true")
 .load("youfile.csv");

然后可以使用from_json解压json列。

代码语言:javascript
复制
val jsonData = spark.read.json(ds.map(x=>x.getString("your_column"))

How to query JSON data column using Spark DataFrames?

然后您可以将其存储在Hive中,json列将是您可以查询的StructType。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58632362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档