我想将我的MySQL数据库连接到配置单元,这样我就可以通过配置单元从MySQL服务器访问表。我在网上搜索过,只找到了将MySQL设置为Hive的转储数据库的解决方案。但是,没有找到任何方法来解决我的问题。有没有人能帮我设置一下?除了MySQL而不是MongoDB,我期待的是像this这样的东西。
发布于 2015-08-17 19:03:48
您可以使用两种方法来实现这一点。一种方法是使用sqoop将mysql表导入到hdfs和配置单元。可以通过sqoop直接导入配置单元。这将在hadoop中创建与mysql对应的hive表。将表导入配置单元后,新表将单独作为配置单元表工作。
另一种方法是使用serde访问mysql表。我在github里找到了一个hive-mysql serde。我还没有测试过这个serde。如果你擅长java,你可以写你自己的serde。
您上面提到的示例使用的是hive-mongodb SerDe。
发布于 2019-11-01 17:58:02
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 docs。
https://stackoverflow.com/questions/32048379
复制相似问题