【问题标题】:How to automatically sync a Hive external table with a MySQL table without using Sqoop?如何在不使用 Sqoop 的情况下自动将 Hive 外部表与 MySQL 表同步?
【发布时间】:2018-12-05 06:28:01
【问题描述】:

我的本​​地机器 (Linux) 本身已经有一个 MySQL 表,并且我有一个与 MySQL 表具有相同架构的 Hive 外部表。

我想在插入或更新新记录时同步我的配置单元外部表。批量更新可以我说每小时一次。 在不使用 sqoop 的情况下实现相同目标的最佳方法是什么?

谢谢, 苏米特

【问题讨论】:

  • 在 Hive / HDFS 中欢迎更新和删除。无论如何,无论 Sqoop 能做什么,Spark 也能做到——使用一些自定义代码。这是最终的 MERGE,要么效率低下,要么很棘手——看看 Uber 对 Hoodie 做了什么。或者 Cloudera 对 Kudu 做了什么。

标签: apache-spark hive hdfs


【解决方案1】:

不用 scoop,您可以创建表 STORED BY JdbcStorageHandler。项目存储库:https://github.com/qubole/Hive-JDBC-Storage-Handler 它将像往常一样运行 hive 表,但查询将在 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"
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多