使用 SQOOP 将数据从 SQL 服务器导入到 HIVE

Importing data from SQL Server to HIVE using SQOOP

我能够使用 sqoop 成功地将数据从 SQL 服务器导入到 HDFS。但是,当它尝试 link 到 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: Using the default value passed in for log id: 95e2b831-cfe5-4108-be0f-0df1d9a8797e 21/03/31 08:52:47 INFO session.SessionState: Updating thread name to 95e2b831-cfe5-4108-be0f-0df1d9a8797e main 21/03/31 08:52:47 INFO conf.HiveConf: Using the default value passed in for log id: 95e2b831-cfe5-4108-be0f-0df1d9a8797e 21/03/31 08:52:47 INFO ql.Driver: Compiling command(queryId=hdfs_20210331085247_050638e8-593a-4d01-8020-c40b7db8e66a): CREATE TABLE IF NOT EXISTS AdventureWorks2019.Production.TransactionHistory ( TransactionID INT, ProductID INT, ReferenceOrderID INT, ReferenceOrderLineID INT, TransactionDate STRING, TransactionType STRING, Quantity INT, ActualCost DOUBLE, ModifiedDate STRING) COMMENT 'Imported by sqoop on 2021/03/31 08:52:45' ROW FORMAT DELIMITED FIELDS TERMINATED BY '4' LINES TERMINATED BY '2' STORED AS TEXTFILE 21/03/31 08:52:49 INFO hive.metastore: HMS client filtering is enabled. 21/03/31 08:52:49 INFO hive.metastore: Trying to connect to metastore with URI thrift://cnt7-naya-cdh63:9083 21/03/31 08:52:49 INFO hive.metastore: Opened a connection to metastore, current connections: 1 21/03/31 08:52:49 INFO hive.metastore: Connected to metastore. 21/03/31 08:52:49 INFO parse.SemanticAnalyzer: Starting Semantic Analysis FAILED: SemanticException [Error 10255]: Invalid table name AdventureWorks2019.Production.TransactionHistory 21/03/31 08:52:49 ERROR ql.Driver: FAILED: SemanticException [Error 10255]: Invalid table name AdventureWorks2019.Production.TransactionHistory

在 Hive 的数据库中没有模式这样的东西。 Databaseschema 意思相同,可以互换使用。

因此,错误在于使用 database.schema.table。在 Hive 中使用 database.table

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