"Not a file" 成功插入后 select 异常
"Not a file" exception on select after successful insert
我创建了一个 table:
DROP TABLE IF EXISTS sampleout;
CREATE EXTERNAL TABLE sampleout(
id bigint,
LNG FLOAT,
LAT FLOAT,
GMTDateTime TIMESTAMP,
calculatedcolumn FLOAT
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE LOCATION 'wasb://sampleout@xxxxxx.blob.core.windows.net/';
然后我从这个查询中获得了成功:
INSERT into TABLE sampleout select *, 0 as calculatedcolumn from sampletable
sampleout
与 sampletable
相同,除了额外的列 calculatedcolumn
。成功插入后,我打开 blob 存储并打开文本文件以验证数据是否在指定的文本文件位置。
然而...
select * from sampleout limit 10
returns 出现以下错误:
Logging initialized using configuration in file:/C:/apps/dist/hive-0.13.0.2.1.12.1-0003/conf/hive-log4j.properties
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/apps/dist/hadoop-2.4.0.2.1.12.1-0003/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/apps/dist/hbase-0.98.0.2.1.12.1-0003-hadoop2/lib/slf4j-log4j12-1.6.4.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
OK
Failed with exception java.io.IOException:java.io.IOException: Not a file: wasb://sampleout@xxxxxx.blob.core.windows.net/hive
Time taken: 3.032 seconds
我怎么能插入成功,但不能从table插入select?请注意,错误显示“/hive”已添加到创建中指定的文本文件位置。
基本上,不要将 TEXTFILE LOCATION 放在根目录下。即使它是 blob 存储(没有真正的文件夹),HDFS 或其他所需的结构也希望您在该位置至少使用一个子文件夹。
移动自
wasb://sampleout@xxxxxx.blob.core.windows.net/
至
wasb://sampleout@xxxxxx.blob.core.windows.net/somefolder/
我创建了一个 table:
DROP TABLE IF EXISTS sampleout;
CREATE EXTERNAL TABLE sampleout(
id bigint,
LNG FLOAT,
LAT FLOAT,
GMTDateTime TIMESTAMP,
calculatedcolumn FLOAT
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE LOCATION 'wasb://sampleout@xxxxxx.blob.core.windows.net/';
然后我从这个查询中获得了成功:
INSERT into TABLE sampleout select *, 0 as calculatedcolumn from sampletable
sampleout
与 sampletable
相同,除了额外的列 calculatedcolumn
。成功插入后,我打开 blob 存储并打开文本文件以验证数据是否在指定的文本文件位置。
然而...
select * from sampleout limit 10
returns 出现以下错误:
Logging initialized using configuration in file:/C:/apps/dist/hive-0.13.0.2.1.12.1-0003/conf/hive-log4j.properties
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/apps/dist/hadoop-2.4.0.2.1.12.1-0003/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/apps/dist/hbase-0.98.0.2.1.12.1-0003-hadoop2/lib/slf4j-log4j12-1.6.4.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
OK
Failed with exception java.io.IOException:java.io.IOException: Not a file: wasb://sampleout@xxxxxx.blob.core.windows.net/hive
Time taken: 3.032 seconds
我怎么能插入成功,但不能从table插入select?请注意,错误显示“/hive”已添加到创建中指定的文本文件位置。
基本上,不要将 TEXTFILE LOCATION 放在根目录下。即使它是 blob 存储(没有真正的文件夹),HDFS 或其他所需的结构也希望您在该位置至少使用一个子文件夹。
移动自
wasb://sampleout@xxxxxx.blob.core.windows.net/
至
wasb://sampleout@xxxxxx.blob.core.windows.net/somefolder/