如何使用 sqoop 在 Hive 中创建外部 table。需要建议

How to create external table in Hive using sqoop. Need suggestions

使用 sqoop 我可以创建托管 table 但不能创建外部 table。

请告诉我从数据仓库卸载数据并将其加载到外部 Hive 中的最佳实践是什么 table。

1.The table仓库分区。有些是按日期分区的,有些是按状态分区的。

请将您的想法或实践用于生产环境。

Sqoop 不支持创建 Hive 外部 table。相反,您可以:

  1. 使用 Sqoop codegen 命令生成 SQL 以创建与远程 RDBMS table 匹配的 Hive 内部 table(参见 http://sqoop.apache.org/docs/1.4.2/SqoopUserGuide.html#_literal_sqoop_codegen_literal
  2. 修改生成的SQL创建一个Hive外部table
  3. 在 Hive
  4. 中执行修改后的 SQL
  5. 运行你的Sqoop导入命令,加载到预先创建的Hive外部table

第 1 步:将数据从 mysql 导入到配置单元 table。

sqoop 导入 --connect jdbc:mysql://localhost/ --用户名训练 --密码训练 --table --hive-import --hive-table -m 1 --fields-terminated-by ','

第 2 步:在配置单元中将 table 类型从托管更改为外部。

    Alter table <Table-name> SET TBLPROPERTIES('EXTERNAL'='TRUE')

注意:您可以直接导入配置单元 table 或配置单元的后端。

我最好的建议是将数据 SQOOP 到 HDFS 并为原始操作和转换创建 EXTERNAL。

终于把数据混进了内部table。我相信这是以正确的方式完成工作的最佳实践之一。 希望这可以帮助!!! 请参阅这些 link:

  1. https://mapr.com/blog/what-kind-hive-table-best-your-data/ 上面如果想直接跳到正文-->2.2.1 External or Internal

  2. https://hadoopsters.net/2016/07/15/hive-tables-internal-and-external-explained/ 在参考第一个 link 之后,第二个将澄清你的大部分问题。

干杯!!