2017-02-15 5 views
0

Spark 2.0の "全段階コード生成"に関する多くの記事を読んでいます。この技術はコンパイル段階でコードを最適化するので、私はそれについていくつか質問があります:Spark 2.0の "全段階コード生成"の活用方法

Q1。 PythonやRはこの手法を利用できますか? Q2。 Scala/Javaでは、このテクニックをどのように利用するのですか? SparkのAPIを使用してすべてのクエリを取得する必要がありますか、文字列クエリだけで十分ですか?例えば、缶 "全段コード生成" を利用して、次の各プログラム:

ケース1:

sparksession.sql("select * from a john b on a.id = b.id") 

ケース2:

val talbe_a = sparksession.sql("select * from a) 
val table_b = sparksession.sql("select * from b) 
val table_c = table_a.join(table_b, table_a(COL_ADID) === table_b(COL_ADID)) 

Q3。上記のコードで

val query = scala.io.Source.fromFile(queryfile).mkString 
sparksession.sql(query) 

、コンパイラが本当に何を知っていない:Q2ケース1は、我々はそのような外部ファイルからクエリ文字列を、読みについてはどのように、「全段コード生成」を利用することができる場合クエリ文字列は、コンパイル段階で、「全段階コード生成」手法を利用できるかのように見えますか?

答えて

0
  1. スパークSQL APIを使用してすべての言語がある限り、彼らはどちらもSQLとDataFrame APIがサポートされている言語固有の拡張機能(PythonのUDF、dapply、Rでgapply

  2. を使用しないようコード生成の恩恵を受けることができます彼らはあなたがクエリを提供する方法は重要ではありません。 Codegenは、ユーザー入力とクエリ実行の間に適用される内部プロセスです。

関連する問題