더북(TheBook)

5.4.3.2 sql 메서드로 등록한 데이터 소스에서 데이터 불러오기

임시 테이블을 등록하면 SQL 쿼리에서도 기존 데이터 소스를 참조할 수 있다. 예를 들어 다음 코드는 DataFrameReaderjdbc 메서드와 (거의) 동일한 결과를 반환한다.

scala> sql("CREATE TEMPORARY TABLE postsjdbc "+
"USING org.apache.spark.sql.jdbc "+
"OPTIONS ("+
"url 'jdbc:postgresql://postgresrv/mydb',"+
"dbtable 'posts',"+
"user 'user',"+
"password 'password')")
scala> val result = sql("select * from postsjdbc")

 

하지만 이 방법으로는 조건절(viewCount > 3)을 지정할 수 없기 때문에 완전히 동일한 결과를 얻을 수 없다. 기본 데이터 소스에서도 이와 마찬가지로 기존 Parquet 파일을 임시 테이블로 등록하고 파일 내용을 불러올 수 있다.

scala> sql("CREATE TEMPORARY TABLE postsParquet "+
  "USING org.apache.spark.sql.parquet "+
  "OPTIONS (path '/path/to/parquet_file')")
scala> val resParq = sql("select * from postsParquet")
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.