mysql - 如何使用 sqoop 将 JSON 字段数据从 mySql 服务器导入到 Hive 表中

标签 mysql json hive sqoop

我在 MySQL 服务器中有一个名为 EmpData 的表,其中有两个字段:EmpID (INT)Details (nvarchar)Details 字段包含 JSON 字符串,例如

{ "name": "Michel","address":{"house no":"12","street":"Johnson road","city":"New Delhi","country":"INDIA"}}

{ "name": "John","address":{"house no":"99","street":"Johnson road","city":"London","country":"UK"}}

我想将 Details 字段 JSON 数据导入到 hive 表 EmpHiveStore 并在 hive 表上进行查询

SELECT name,address.street from EmpHiveStore;

有没有办法使用sqoop将JSON字段数据导入到Hive表中?

谢谢。

最佳答案

Sqoop 的工作是将数据从 RDBMS(在您的情况下是 MySQL)导入到 Hive。

您需要为此使用 sqoop import 命令

sqoop import \
--connect jdbc:mysql://mysql.example.com/testdb \
--username root \
--password root \
--table EmpData \
--columns Details \
--hive-import \
--hive-table EmpHiveStore

如果配置单元表不存在,这将创建。 Sqoop 的工作就在这里完成。 Hive 会将这些数据存储在字符串中。 Hive 中没有特殊的 JSON 类型。因此,您将无法执行类似的查询

SELECT name,address.street from EmpHiveStore;

直接通过配置单元。

您可以使用

获取数据的位置
show create table EmpHiveStore;

您的表中只有 1 列,并且包含 JSON 数据。所以它基本上是 HDFS 中的一个 JSON 文件。

您想要查询嵌套 JSON。您需要另一个工具来允许您执行这样的查询。您可以探索 SQL 查询引擎,如 DrillSpark SQL为此。

关于mysql - 如何使用 sqoop 将 JSON 字段数据从 mySql 服务器导入到 Hive 表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38604707/

相关文章:

javascript - typescript 自动序列化类实例?

hadoop - 从regexp_extract()中提取

java - Camunda - 数据库快速增长问题

mysql - 如何在数据库中存储特定条目的访问者?

mysql选择

c# - 通过转换器转换Json字符串与反序列化

php - 有什么更好的 : Json or XML (PHP)

api - 如何在 Hive 之上使用 GraphQL 创建 API?

hadoop - 配置单元权限被拒绝,插入覆盖目录

python - Python 中的持久 MySQL 连接