스파크에서 생성 된 데이터의 상단에 하이브 테이블을 만듭니다이 같은 스파크에서 ORC 형식으로 데이터를 생성 한
이제var select: String = "SELECT ..."
sqlContext.sql(select).write.format("orc").save("/tmp/out/20160101")
select = "SELECT ..."
sqlContext.sql(select).write.format("orc").save("/tmp/out/20160102")
& so on...
다음과 같이 내가 하이브에서 외부 테이블을 만들려고 오전 :
CREATE EXTERNAL TABLE `mydb.mytable`
(`col1` string,
`col2` decimal(38,0),
`create_date` timestamp,
`update_date` timestamp)
PARTITIONED BY (`my_date` string)
STORED AS ORC
LOCATION '/tmp/out/';
내가 할 경우 :
"select count(*) from mydb.mytable"
내가 0로 카운트 값을 얻을그러나 스파크 쉘에서, 나는 실행하면 예상대로
val results = sqlContext.read.format("orc").load("/tmp/out/*/part*")
results.registerTempTable("results")
sqlContext.sql("select count(*) from results").show
나는 50 개 행을 얻을.
'파티션'이 인식되지 않는 것처럼 보입니다. Spark에서 생성 된 데이터 위에 '외부'하이브 테이블을 만들려면 어떻게해야합니까?
당신이 데이터를 찾을 수 하이브를 말하는 것'/ tmp를/출력/my_date ='하지만 스파크에서 아웃/' –
puhlen
흠 ... 내가 하이브를 알 수있는 방법 보는 /'/ tmp로 저장하는/tmp/out//tmp/out/my_date = 에 없습니까? 차라리 출력 위치를 변경하지 않을 것입니다. –
DilTeam
내가 아는 한 너는하지 않는다. ' = '은 하이브 파티션 디렉토리 이름의 형식입니다. 그것을 따르도록 스파크의 출력을 변경하십시오. –
puhlen