【问题标题】:Importing data from SQL Server to HIVE using SQOOP使用 SQOOP 将数据从 SQL Server 导入 HIVE
【发布时间】:2023-03-13 00:18:01
【问题描述】:

我能够使用 sqoop 成功地将数据从 SQL Server 导入 HDFS。但是,当它尝试链接到 HIVE 时,出现错误。我不确定我是否正确理解了错误

sudo -u hdfs sqoop import  \
-Dorg.apache.sqoop.splitter.allow_text_splitter=true  \
--connect "jdbc:sqlserver://XX.XX.X.X:1433;instanceName=data-engr-sql-svr;  databaseName=AdventureWorks2019"  \
--username sa  \
--password XXXXXXXX  \
--driver com.microsoft.sqlserver.jdbc.SQLServerDriver  \
--warehouse-dir "/user/hive/warehouse/AdventureWorks2019.db"  \
--hive-import  \
--create-hive-table  \
--fields-terminated-by ',' \
--hive-table AdventureWorks2019.Production.TransactionHistory  \
--table Production.TransactionHistory  \
--split-by TransactionID  \
-- --schema Production

我不知道如何处理模式,本教程的大部分内容都使用了一个没有正确模式的虚拟数据库,这无济于事。

错误

21/03/31 08:52:47 INFO conf.HiveConf:使用传入的日志 ID 的默认值:95e2b831-cfe5-4108-be0f-0df1d9a8797e 21/03/31 08:52:47 INFO session.SessionState:将线程名称更新为 95e2b831-cfe5-4108-be0f-0df1d9a8797e main 21/03/31 08:52:47 INFO conf.HiveConf:使用传入的日志 ID 的默认值:95e2b831-cfe5-4108-be0f-0df1d9a8797e 21/03/31 08:52:47 INFO ql.Driver: 编译命令(queryId=hdfs_20210331085247_050638e8-593a-4d01-8020-c40b7db8e66a): 如果不存在则创建表AdventureWorks2019.Production.TransactionHistory (TransactionID INT, ReferenceOrderID INT, ReferenceOrderLineID INT, TransactionDate STRING, TransactionType STRING, Quantity INT, ActualCost DOUBLE, ModifiedDate STRING) COMMENT '由 sqoop 于 2021/03/31 8 导入:以 '\054' 终止的 45' 行格式分隔字段 以 '\012' 终止的行 存储为文本文件 21/03/31 08:52:49 INFO hive.metastore:启用 HMS 客户端过滤。 21/03/31 08:52:49 INFO hive.metastore:尝试使用 URI thrift://cnt7-naya-cdh63:9083 连接到 Metastore 21/03/31 08:52:49 INFO hive.metastore:打开到 Metastore 的连接,当前连接:1 21/03/31 08:52:49 信息 hive.metastore:连接到 Metastore。 21/03/31 08:52:49 INFO parse.SemanticAnalyzer:开始语义分析 失败:SemanticException [错误 10255]:无效的表名 AdventureWorks2019.Production.TransactionHistory 21/03/31 08:52:49 ERROR ql.Driver: FAILED: SemanticException [Error 10255]: Invalid table name AdventureWorks2019.Production.TransactionHistory

【问题讨论】:

    标签: sql-server hadoop hive sqoop


    【解决方案1】:

    在 Hive 的数据库中没有 schema 之类的东西。 Databaseschema 意思相同,可以互换使用。

    所以,错误在于使用database.schema.table。在 Hive 中使用 database.table

    阅读文档:Create/Drop/Alter/UseDatabase

    【讨论】:

      猜你喜欢
      • 2016-03-17
      • 1970-01-01
      • 2021-05-14
      • 2021-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-12
      • 2020-12-17
      相关资源
      最近更新 更多