Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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 Can';t从avro文件创建配置单元表_Hive_Create Table_Avro - Fatal编程技术网

Hive Can';t从avro文件创建配置单元表

Hive Can';t从avro文件创建配置单元表,hive,create-table,avro,Hive,Create Table,Avro,我可以使用以下语法在avro文件上创建一个表,而不会出现任何错误。这是一张冷杉的空桌子 CREATE EXTERNAL TABLE tableName PARTITIONED BY (ingestiondatetime BIGINT, recordtype STRING) ROW FORMAT SERDE 'org.apache.hadoop.hive.serd2.avro.AvroSerDe' STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql

我可以使用以下语法在avro文件上创建一个表,而不会出现任何错误。这是一张冷杉的空桌子

CREATE EXTERNAL TABLE  tableName 
PARTITIONED BY (ingestiondatetime BIGINT, recordtype STRING)
ROW FORMAT SERDE
'org.apache.hadoop.hive.serd2.avro.AvroSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
TABLEPROPERTIES ('avro.schema.url'='hdfs:///user/file.avsc');
当我添加位置行以指向实际的avro文件loctaion时,我得到一个权限错误

CREATE EXTERNAL TABLE  tableName 
PARTITIONED BY (ingestiondatetime BIGINT, recordtype STRING)
ROW FORMAT SERDE
'org.apache.hadoop.hive.serd2.avro.AvroSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
LOCATION '/local/avro_dir/'
TABLEPROPERTIES ('avro.schema.url'='hdfs:///user/file.avsc');
错误是

> FAILED:  Error in metadata.....  
> org.apache.hadoop.security.AccessControlException: Permission denied: 
> user=hive, access=WRITE, inode="/" hdfs:supergroup:drwxr-xr-x

我像我一样管理蜂巢。我对hdfs的权限是完全开放的(777)。配置单元试图写入其认为没有权限的内容的位置?

它正试图以配置单元用户的身份执行此操作

这里是错误&它试图告诉你什么

权限被拒绝:user=hive,access=WRITE,inode=“/”hdfs:supergroup:drwxr-xr-x

例外情况告诉您: 谁在做这件事:user=hive 用户尝试执行的操作:access=WRITE 正在访问什么:inode=“/” 该位置的权限: hdfs:supergroup:drwxr-xr-x

运行hadoop fs-ls-la/

您描述的权限(777)未反映在错误消息中。错误消息中的权限表明每个人都有读取和执行权限,但没有写入权限

正如阿马尔所说,看到完整的命令会很有帮助

如果这是我,那是因为我的位置有一个输入错误,而hive正试图创建目录

如果你跑
hadoop fs-ls[您的位置属性]
.. 这个位置存在吗

祝你好运


Brian

表格属性应为TBLProperty


另外,对于使用API的用户,不允许使用“;”,至少在我的Spark和Hive版本中是这样,但您知道这种变化的速度有多快。

您当前的用户是没有inode=“/”写入权限的Hive

从命令提示符启动配置单元之前 尝试通过写入将您的当前用户更改为hdfs


导出HADOOP\u USER\u NAME=hdfs

能否显示添加了位置的完整查询?