Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hive 配置单元Avro外部表查询-IOException:不是数据文件_Hive_Sqoop - Fatal编程技术网

Hive 配置单元Avro外部表查询-IOException:不是数据文件

Hive 配置单元Avro外部表查询-IOException:不是数据文件,hive,sqoop,Hive,Sqoop,我在使用Avro数据/架构创建配置单元外部表时遇到问题: 以下步骤: 从MySQL-HDFS导入数据作为AVRO。 将.avsc文件从本地传输到HDFS[打开该文件并 架构与预期的一样好] 已验证数据作为SQOOP导入的结果存在于HDFS中。 现在创建了一个外部表,将模式指向步骤2和数据 定位到步骤3。 配置单元命令行表示“确定”,表已创建。ShotTables显示 表,并验证了文件位置标记从色调都是好的。 从配置单元命令行查询表时,出现错误: IOException:java.io.IOExc

我在使用Avro数据/架构创建配置单元外部表时遇到问题:

以下步骤:

从MySQL-HDFS导入数据作为AVRO。 将.avsc文件从本地传输到HDFS[打开该文件并 架构与预期的一样好] 已验证数据作为SQOOP导入的结果存在于HDFS中。 现在创建了一个外部表,将模式指向步骤2和数据 定位到步骤3。 配置单元命令行表示“确定”,表已创建。ShotTables显示 表,并验证了文件位置标记从色调都是好的。 从配置单元命令行查询表时,出现错误:

IOException:java.io.IOException:不是数据文件

配置单元>创建外部表部门savro2行格式serde'org.apache.hadoop.hive.serde2.avro.AvroSerDe'存储为inputformat'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' outputformat'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat' 地点'hdfs://quickstart.cloudera/user/cloudera/sqoopAvro' tblproperties'avro.schema.url'='hdfs://quickstart.cloudera/user/cloudera/departments.avsc';

输出:

OK
Time taken: 0.092 seconds
OK
departmentsavro2
order_items
orders
Time taken: 0.016 seconds, Fetched: 12 row(s)
OK
Failed with exception java.io.IOException:java.io.IOException: Not a data file.
Time taken: 0.145 seconds
蜂巢>显示表格

输出:

OK
Time taken: 0.092 seconds
OK
departmentsavro2
order_items
orders
Time taken: 0.016 seconds, Fetched: 12 row(s)
OK
Failed with exception java.io.IOException:java.io.IOException: Not a data file.
Time taken: 0.145 seconds
蜂巢>从部门Savro2中选择*

输出:

OK
Time taken: 0.092 seconds
OK
departmentsavro2
order_items
orders
Time taken: 0.016 seconds, Fetched: 12 row(s)
OK
Failed with exception java.io.IOException:java.io.IOException: Not a data file.
Time taken: 0.145 seconds
正如在一些线程中所建议的那样,它们为HDFS中的.avsc/data文件提供了所有必要的RWX权限


有指针吗?

您使用的是从sqoop导入数据的同一文件夹吗


如果是,因为所有mapreduce作业sqoop也会在输出文件夹中创建_SUCCESS文件,该文件未被Avroserde标识。因此,从您在配置单元创建查询中指向的文件夹中删除_SUCCESS文件,然后选择查询将正常工作。

您使用的是从sqoop导入数据的同一文件夹吗


如果是,因为所有mapreduce作业sqoop也会在输出文件夹中创建_SUCCESS文件,该文件未被Avroserde标识。因此,从您在hive create query中指向的文件夹中删除_SUCCESS文件,然后选择查询将正常工作。

我也已经解决了这一问题几天了。。。。最后,发现我将AVSC文件存储在与AVRO文件相同的目录中。出于某种原因,这是问题的根源。那么,解决方案将是:

为avro和avsc文件创建不同的目录: $hadoop fs-mkdir/user/hduser/idl

$hadoop fs-mkdir/user/hduser/data

将每个文件移动到其位置: $hadoop fs-mv/user/hduser/avrofile.avsc/user/hduser/idl

$hadoop fs-mv/user/hduser/avrofile.avro/user/hduser/data

重新创建表 下拉表外部_avro_表

CREATE EXTERNAL TABLE external_avro_table
 ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
 STORED AS INPUTFORMAT  'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
 OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
 LOCATION 'hdfs://namenode:54310/user/hduser/data'
 TBLPROPERTIES ('avro.schema.url'='hdfs://namenode:54310/user/hduser/idl/avrofile.avsc');
四,。不要将任何其他内容与avro文件混合。配置单元将尝试将文件位置中的任何内容引用为具有avro格式


希望这能有所帮助。

我也已经围绕这个问题工作了几天。。。。最后,发现我将AVSC文件存储在与AVRO文件相同的目录中。出于某种原因,这是问题的根源。那么,解决方案将是:

为avro和avsc文件创建不同的目录: $hadoop fs-mkdir/user/hduser/idl

$hadoop fs-mkdir/user/hduser/data

将每个文件移动到其位置: $hadoop fs-mv/user/hduser/avrofile.avsc/user/hduser/idl

$hadoop fs-mv/user/hduser/avrofile.avro/user/hduser/data

重新创建表 下拉表外部_avro_表

CREATE EXTERNAL TABLE external_avro_table
 ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
 STORED AS INPUTFORMAT  'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
 OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
 LOCATION 'hdfs://namenode:54310/user/hduser/data'
 TBLPROPERTIES ('avro.schema.url'='hdfs://namenode:54310/user/hduser/idl/avrofile.avsc');
四,。不要将任何其他内容与avro文件混合。配置单元将尝试将文件位置中的任何内容引用为具有avro格式


希望这有帮助。

通过配置单元命令验证数据和架构是否存在不确定有什么问题,仅在查询表时:配置单元>dfs-cathdfs://quickstart.cloudera/user/cloudera/sqoopAvro/part*; 2、健身3、鞋类4、服装5、高尔夫6、户外7、风扇店10000、服装蜂巢>蜂巢>dfs-猫hdfs://quickstart.cloudera/user/cloudera/departments.avsc; {type:record,name:departments,doc:Sqoop部门导入,字段:[{name:department\u id,type:[null,int],默认值:null,columnName:department\u id,sqlType:4},{name:department\u name,type:[null,string],默认值:null,columnName:department\u name,sqlType:12}],tableName:departmentsCheck this:通过配置单元命令验证数据和架构是否存在不确定有什么问题,仅在查询表时:配置单元>dfs-cathdfs://quickstart.cloudera/user/cloudera/sqoopAvro/part*;2、健身3、鞋类4、服装5、高尔夫6、户外7、粉丝店10000、服装蜂巢>蜂巢>dfs-猫hdfs://quickstart.cloudera/user/cloudera/departments.avsc;{type:record,name:departments,doc:Sqoop导入部门,字段:[{name:department\u id,type:[null,int],默认值:null,columnName:department\u id,sqlType:4},{name:department\u name,type:[null,string],默认值:null,columnNam e:department_name,sqlType:12}],tableName:departmentsCheck此: