【发布时间】:2019-10-03 17:42:07
【问题描述】:
我必须从那里复制整个 mysql 表到 hive。 我不能使用 sqoop。
我找到了一种从 mysql 获取整个数据集并逐行(循环进入数据集)、复制到 hive 中的方法...
但这是一个非常慢的方法(50k 行在我的集群中需要几个小时)
是像“*insert into mysql select * from hive*”这样的方式吗?
谢谢你 马可
【问题讨论】:
-
你不需要逐行复制。获取数据集,将其移动到 HDFS 中的表位置或 Hive 表指向的任何位置,然后执行表“修复”以将更新与元存储同步
-
你的意思是这样的吗?
sql = "SELECT * FROM mysqldb.mysqltable"cur.execute(sql)result_set = cur.fetchall()hdfs dfs -put -f result_set /myhdfsroot/myhdfsfolder -
为我未格式化的评论道歉,仍然没有学会如何格式化它们......
-
是的。如果您的 Hive 表使用特定的字段分隔符和行终止符,请在将其移动到 HDFS 之前将它们添加到数据集中。否则数据集将在 Hive 中不可见
-
使用 JdbcStorageHandler 可以从 Hive 直接连接到 mysql:stackoverflow.com/a/51050552/2700344