我可以和hive一起加入mysql吗?

时间:2014-12-17 05:22:00

标签: mysql hive hdfs

我可以在mysql和hive(hdfs上的hive)之间加入表吗?

有人告诉我它在mysql和oracle之间有效。

示例:

SELECT a.* FROM a JOIN b ON (a.id = b.id)

a位于mysql,当b位于hdfs上的配置单元时。

我怎样才能让它发挥作用?

3 个答案:

答案 0 :(得分:3)

不,你不能使用Hive将MySQL / Oracle中的表连接到HDFS中的表。

作为一种解决方法,您可以使用Sqoop将表格从MySQL / Oracle转移到Hive,然后在Hive中加入它们。

例如,如果你在MySQL中有一个名为a的表,你可以使用Sqoop将表格变成hive,如下所示:

sqoop import --connect jdbc:mysql://localhost/yourDBName \
   --username root -P \
   --table a \
   --hive-import \
   --hive-table a \
   -m 1

一旦导入完成,你可以加入两个表,假设b是你在Hive中的另一个表:

SELECT a.* FROM a JOIN b ON (a.id = b.id)

答案 1 :(得分:3)

您可以使用Spark执行相同的操作

val mysqlDF = spark
                .read
                .jdbc(url, tablename, props) 

val hiveDF = spark
                .read
                .table(tablename) 

然后你可以加入那些DF并执行你的逻辑

您也可以将mysqlDF写入表格

 mysqlDF.write.saveAsTable(tablename2)

您可以加入spark-sql cli spark-sql>

中的2个表

答案 2 :(得分:0)

评论可能为时已晚 - 但仍然如此: Presto具有此内置功能。它使用目录和模式来实现这一目标。

  

Presto允许查询它所在的数据,包括Hive,Cassandra,关系数据库甚至专有数据存储。单个Presto查询可以组合来自多个来源的数据,从而允许整个组织进行分析。

- 来自https://prestodb.io/