Hadoop 使用Sqoop导出从基于S3的表到MySQL的Sqoop导出失败
我有一个基于s3的表Hadoop 使用Sqoop导出从基于S3的表到MySQL的Sqoop导出失败,hadoop,amazon-s3,hive,sqoop,amazon-emr,Hadoop,Amazon S3,Hive,Sqoop,Amazon Emr,我有一个基于s3的表 CREATE TABLE IF NOT EXISTS sales_by_location ( client_id STRING, client_name STRING, merchant_id STRING, merchant_name STRING, location_id STRING, location_name STRING, sales_date DATE, sales_hour
CREATE TABLE IF NOT EXISTS sales_by_location (
client_id STRING,
client_name STRING,
merchant_id STRING,
merchant_name STRING,
location_id STRING,
location_name STRING,
sales_date DATE,
sales_hour INT,
sales_hour_half INT,
total_sales INT
)
CLUSTERED BY (client_id) INTO 32 BUCKETS
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'
STORED AS ORC
LOCATION 's3://reports-test/sales_by_location/'
TBLPROPERTIES(
'transactional'='true',
'orc.compress'='SNAPPY');
我正在尝试使用SQOOP export命令将此表导出到MYSQL
下面是命令
sqoop export --connect $MYSQL_REPORTS_DATABASE_JDBC_URL --username $MYSQL_DB_USER --password $MYSQL_DB_PASSWORD
--table sales_by_location --columns "clientId,clientName,merchantId,merchantName,locationId,locationName,salesDate,salesHour,salesHourHalf,totalSales"
--update-key clientId,clientName,merchantId,merchantName,locationId,locationName,salesDate,salesHour,salesHourHalf
--update-mode allowinsert --export-dir s3://reports-test/sales_by_location/ --input-fields-terminated-by ';' --batch
但它给出了这个错误
20/09/16 12:40:58信息mapreduce.作业:正在运行作业:作业\u 1600180342842\u 0178
20/09/16 12:41:04信息mapreduce.作业:作业作业在uber模式下运行:false
20/09/16 12:41:04信息地图还原。作业:地图0%还原0%
20/09/16 12:41:08信息mapreduce.作业:任务Id:尝试\u 1600180342842\u 0178\u m\u000000\u 0,状态:失败
错误:java.io.IOException:'s3://reports test/sales_by_location/delta_0000247_0000247_0000'是一个目录
位于com.amazon.ws.emr.hadoop.fs.s3n.S3NativeFileSystem.open(S3NativeFileSystem.java:1208)
位于org.apache.hadoop.fs.FileSystem.open(FileSystem.java:773)
位于com.amazon.ws.emr.hadoop.fs.EmrFileSystem.open(EmrFileSystem.java:166)
位于org.apache.hadoop.mapreduce.lib.input.LineRecordReader.initialize(LineRecordReader.java:85)
位于org.apache.sqoop.mapreduce.CombineShimRecordReader.initialize(CombineShimRecordReader.java:76)
位于org.apache.sqoop.mapreduce.CombineFileRecordReader.initialize(CombineFileRecordReader.java:64)
位于org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.initialize(MapTask.java:557)
位于org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:795)
位于org.apache.hadoop.mapred.MapTask.run(MapTask.java:342)
位于org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164)
位于java.security.AccessController.doPrivileged(本机方法)
位于javax.security.auth.Subject.doAs(Subject.java:422)
位于org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1698)
位于org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
它说一些IO错误,但不清楚。一个简单的sqoop导出(不更新)是否有效?如果是,则sqoop进程正在工作,并且存在数据更新问题。你能检查一下键列吗?试试不同的组合。