如何使用 sqoop 将 JSON 字段数据从 mySql 服务器导入 Hive table
How can I import JSON field data from mySql server into Hive table using sqoop
我在 MySQL 服务器中有一个 table 名称 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 数据导入配置单元 table EmpHiveStore
并在配置单元 table 上查询
SELECT name,address.street from EmpHiveStore;
有什么方法可以使用 sqoop 将 JSON 字段数据导入到 Hive table 中吗?
谢谢。
Sqoop 在这里的工作是将数据从 RDBMS(MySQL 在你的情况下)导入到 Hive。
您需要为此使用 sqoop 导入命令
sqoop import \
--connect jdbc:mysql://mysql.example.com/testdb \
--username root \
--password root \
--table EmpData \
--columns Details \
--hive-import \
--hive-table EmpHiveStore
如果不存在,这将创建配置单元 table。 Sqoop 的工作到这里就完成了。 Hive 会将此数据存储在 String 中。 Hive 中没有特殊的JSON 类型。因此,您将无法执行
这样的查询
SELECT name,address.street from EmpHiveStore;
直接通过配置单元。
您可以使用
获取数据的位置
show create table EmpHiveStore;
您的 table 中只有 1 列,它有 JSON 数据。所以它基本上是 HDFS 中的一个 JSON 文件。
您想查询嵌套 JSON。您需要另一个工具来执行这样的查询。您可以为此探索 SQL 查询引擎,例如 Drill and Spark SQL。
我在 MySQL 服务器中有一个 table 名称 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 数据导入配置单元 table EmpHiveStore
并在配置单元 table 上查询
SELECT name,address.street from EmpHiveStore;
有什么方法可以使用 sqoop 将 JSON 字段数据导入到 Hive table 中吗?
谢谢。
Sqoop 在这里的工作是将数据从 RDBMS(MySQL 在你的情况下)导入到 Hive。
您需要为此使用 sqoop 导入命令
sqoop import \
--connect jdbc:mysql://mysql.example.com/testdb \
--username root \
--password root \
--table EmpData \
--columns Details \
--hive-import \
--hive-table EmpHiveStore
如果不存在,这将创建配置单元 table。 Sqoop 的工作到这里就完成了。 Hive 会将此数据存储在 String 中。 Hive 中没有特殊的JSON 类型。因此,您将无法执行
这样的查询SELECT name,address.street from EmpHiveStore;
直接通过配置单元。
您可以使用
获取数据的位置show create table EmpHiveStore;
您的 table 中只有 1 列,它有 JSON 数据。所以它基本上是 HDFS 中的一个 JSON 文件。
您想查询嵌套 JSON。您需要另一个工具来执行这样的查询。您可以为此探索 SQL 查询引擎,例如 Drill and Spark SQL。