[HADOOP] Amazon EMR 및 Hive : 외부 테이블에 하위 디렉토리를로드 할 때 "java.io.IOException : 파일이 아님"예외가 발생 함
HADOOPAmazon EMR 및 Hive : 외부 테이블에 하위 디렉토리를로드 할 때 "java.io.IOException : 파일이 아님"예외가 발생 함
Amazon EMR을 사용하고 있습니다. s3에 로그 데이터가 있지만 모두 동일한 버킷에 있지만 다른 하위 디렉토리에 있습니다. 처럼:
"s3://bucketname/2014/08/01/abc/file1.bz"
"s3://bucketname/2014/08/01/abc/file2.bz"
"s3://bucketname/2014/08/01/xyz/file1.bz"
"s3://bucketname/2014/08/01/xyz/file3.bz"
나는 사용하고있다 :
Set hive.mapred.supports.subdirectories=true;
Set mapred.input.dir.recursive=true;
"s3 : // bucketname / 2014 / 08 /"에서 모든 데이터를로드하려고 할 때 :
CREATE EXTERNAL TABLE table1(id string, at string,
custom struct<param1:string, param2:string>)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
LOCATION 's3://bucketname/2014/08/';
그 대가로 나는 얻는다 :
OK
Time taken: 0.169 seconds
테이블을 쿼리하려고 할 때 :
SELECT * FROM table1 LIMIT 10;
나는 얻다:
Failed with exception java.io.IOException:java.io.IOException: Not a file: s3://bucketname/2014/08/01
누구든지 이것을 해결하는 방법에 대한 아이디어가 있습니까?
해결법
-
==============================
1.EMR 관련 문제입니다. Amazon 지원에서 얻은 것입니다.
EMR 관련 문제입니다. Amazon 지원에서 얻은 것입니다.
-
==============================
2.이제 작동합니다 (2018 년 5 월)
이제 작동합니다 (2018 년 5 월)
전역 EMR_wide 수정은 /etc/spark/conf/spark-defaults.conf 파일에서 다음을 설정하는 것입니다.
spark.hadoop.mapreduce.input.fileinputformat.input.dir.recursive true hive.mapred.supports.subdirectories true
또는 다음 pyspark 코드와 같이 로컬로 수정할 수 있습니다.
from pyspark.context import SparkContext from pyspark.sql import SparkSession spark = SparkSession \ .builder \ .appName("Python Spark SQL Hive integration example") \ .enableHiveSupport() \ .config("spark.hadoop.mapreduce.input.fileinputformat.input.dir.recursive","true") \ .config("hive.mapred.supports.subdirectories","true") \ .getOrCreate() spark.sql("<YourQueryHere>").show()
-
==============================
3.문제는 위치를 지정한 방식입니다
문제는 위치를 지정한 방식입니다
s3 : // bucketname / 2014 / 08 /
하이브 외부 테이블은 파일이이 위치에있을 것으로 예상하지만 폴더가 있습니다.
같은 경로를 넣어보십시오
"s3://bucketname/2014/08/01/abc/,s3://bucketname/2014/08/01/xyz/"
파일까지 경로를 제공해야합니다.
from https://stackoverflow.com/questions/25708240/amazon-emr-and-hive-getting-a-java-io-ioexception-not-a-file-exception-when by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 파이썬을 사용하여 JSON을 HDFS에 저장 (0) | 2019.08.16 |
---|---|
[HADOOP] dse 4.5에서 스파크 마스터를 실행할 수없고 슬레이브 파일이 없습니다. (0) | 2019.08.16 |
[HADOOP] spark Yarn 모드 spark-submit에서 applicationId를 얻는 방법 (0) | 2019.08.16 |
[HADOOP] 단일 JVM에서 hadoop 멀티 스레드 방식을 실행하는 방법은 무엇입니까? (0) | 2019.08.16 |
[HADOOP] Oozie에서 여러 Hive QL 최적화 (0) | 2019.08.16 |