2016-07-28 4 views
-1

기본적으로 데이터를로드 할 때 모든 열은 문자열 유형으로 간주됩니다. 내가하려고 할 때스파크의 열의 데이터 유형을 RDD로 변경하고 쿼리하기

temp.printSchema 
|-- firstName: string (nullable = true) 
|-- lastName: string (nullable = true) 
|-- age: string (nullable = true) 
|-- doj: date (nullable = true) 

은 임시 테이블을 등록하고

temp.registerTempTable("temptable"); 
val temp1 = sqlContext.sql("select * from temptable") 
temp1.show() 
+---------+--------+---+----------+ 
|firstName|lastName|age|  doj| 
+---------+--------+---+----------+ 
| dileep|  gog| 21|2016-01-01| 
| avishek| ganguly| 21|2016-01-02| 
| shreyas|  t| 20|2016-01-03| 
+---------+--------+---+----------+ 
val temp2 = sqlContext.sql("select * from temptable where doj > cast('2016-01-02' as date)") 

을에 조회 것처럼 보이는 RDD의 스키마를 업데이트 한 후

firstName,lastName,age,doj 
dileep,gog,21,2016-01-01 
avishek,ganguly,21,2016-01-02 
shreyas,t,20,2016-01-03 

그러나 : 데이터처럼 보인다 그것이 내게주는 결과를보십시오 :

temp2: org.apache.spark.sql.DataFrame = [firstName: string, lastName: string, age: string, doj: date] 

내가

temp2.show() 
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer 
+0

"스키마를 어떻게 업데이트하고 있습니까?" –

+0

var x = tempSchema.toArray; val y = StructField ("dob", DateType, true), x.update (3, y) \t tempSchema = StructType (x), val temp = sqlContext.applySchema (tempSchemaRDD, tempSchema) ; – Dileep

답변

0

그래서 난 당신의 코드를 시도하고 나를 위해 작동 할 때. 나는 처음에 스키마를 변경하는 방법에 문제가 있다고 생각한다. 내게는 (코멘트에 글을 올릴 때 읽기가 조금 어렵다. 대신 코드로 질문을 업데이트해야한다.) 예상대로

import org.apache.spark.sql.functions._ 

val temp = df.withColumn("doj", to_date('doj)) 
temp.registerTempTable("temptable"); 
val temp2 = sqlContext.sql("select * from temptable where doj > cast('2016-01-02' as date)") 

는 A temp2.show()을하는 계시 : 다음

val df = sc.parallelize(List(("dileep","gog","21","2016-01-01"), ("avishek","ganguly","21","2016-01-02"), ("shreyas","t","20","2016-01-03"))).toDF("firstName", "lastName", "age", "doj") 

:

먼저 입력을 시뮬레이션 :

어쨌든, 나는이 방법을 수행 한

+---------+--------+---+----------+ 
|firstName|lastName|age|  doj| 
+---------+--------+---+----------+ 
| shreyas|  t| 20|2016-01-03| 
+---------+--------+---+----------+ 
+0

제안을 주셔서 감사합니다. 완전한 코드와 설명으로 제 질문을 업데이트 할 것입니다. – Dileep

관련 문제