如何在不使用Sqoop的情况下自动将Hive外部表与MySQL表同步?

时间:2018-06-26 13:47:34

标签: apache-spark hive hdfs

我已经在本地计算机(Linux)中拥有一个MySQL表,并且我有一个Hive外部表,该表具有与MySQL表相同的架构。

无论何时插入或更新新记录,我都希望同步我的配置单元外部表。我可以每小时进行一次批量更新。 不使用sqoop达到相同效果的最佳方法是什么?

谢谢, 提交

1 个答案:

答案 0 :(得分:0)

您无需创建任何信息,就可以创建表STORED BY JdbcStorageHandler 。项目存储库: https://github.com/qubole/Hive-JDBC-Storage-Handler 它将像通常的配置单元表一样工作,但是查询将在MySQL上运行。谓词下推将起作用。

DROP TABLE HiveTable;
CREATE EXTERNAL TABLE HiveTable(
  id INT,
  id_double DOUBLE,
  names STRING,
  test INT
)
STORED BY 'org.apache.hadoop.hive.jdbc.storagehandler.JdbcStorageHandler'
TBLPROPERTIES (
  "mapred.jdbc.driver.class"="com.mysql.jdbc.Driver",
  "mapred.jdbc.url"="jdbc:mysql://localhost:3306/rstore",
  "mapred.jdbc.username"="root",
  "mapred.jdbc.input.table.name"="JDBCTable",
  "mapred.jdbc.output.table.name"="JDBCTable",
  "mapred.jdbc.password"="",
  "mapred.jdbc.hive.lazy.split"= "false"
);