从Hive连接到MySQL

4
我希望将我的MySQL数据库连接到Hive,以便通过Hive访问MySQL服务器上的表格。我已经在网络上搜索过,只找到了将MySQL设置为Hive元数据存储库的解决方案,但没有找到任何解决我的问题的方法。请问有人能帮我设置吗?我期望得到类似这个链接,只不过是针对MySQL而不是MongoDB。
2个回答

0

你可以通过两种方法实现这一点。 一种方法是使用sqoop将mysql表导入到hdfs和hive中。直接使用sqoop进行hive导入是可能的。这将在hadoop中创建与mysql对应的hive表。一旦你将表导入到hive中,那么新的表将作为一个独立的hive表工作。

另一种方法是使用serde访问mysql表。我在github上找到了一个hive-mysql serde。我还没有测试过这个serde。如果你擅长java,你可以编写自己的serde。

你提到的示例使用了一个hive-mongodb SerDe。


0
Hive 2.3.0+ 提供了使用 JdbcStorageHandler 从 MySQL/Postgres 等数据库定义外部表的功能:
CREATE EXTERNAL TABLE student_jdbc
(
  name string,
  age int,
  gpa double
)
STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler'
TBLPROPERTIES (
    "hive.sql.database.type" = "MYSQL",
    "hive.sql.jdbc.driver" = "com.mysql.jdbc.Driver",
    "hive.sql.jdbc.url" = "jdbc:mysql://localhost/sample",
    "hive.sql.dbcp.username" = "hive",
    "hive.sql.dbcp.password" = "hive",
    "hive.sql.table" = "STUDENT"
    "hive.sql.dbcp.maxActive" = "1"
);

另外,您可以使用hive.sql.query参数来定义更具体的查询,而不是使用hive.sql.table

    "hive.sql.query" = "SELECT name, age, gpa FROM STUDENT"

另外请参考Cloudera文档


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接