docs によると、collect_set
およびcollect_list
関数はSpark SQLで使用できるはずです。ただし、動作させることはできません。 Dockerイメージ を使用してSpark 1.6.0を実行しています。
私はScalaでこれをしようとしています:
import org.Apache.spark.sql.functions._
df.groupBy("column1")
.agg(collect_set("column2"))
.show()
また、実行時に次のエラーを受け取ります。
Exception in thread "main" org.Apache.spark.sql.AnalysisException: undefined function collect_set;
pyspark
を使用して試しましたが、失敗しました。これらの機能はHive UDAFのエイリアスであるとドキュメントに記載されていますが、これらの機能を有効にする方法がわかりません。
これを修正する方法は?ありがとう!
Spark 2.0 +:
SPARK-10605 ネイティブcollect_list
およびcollect_set
実装。 Hiveサポート付きのSparkSession
またはHiveContext
は不要になりました。
Spark 2.0-SNAPSHOT(2016-05-03以前):
特定のSparkSession
に対してHiveサポートを有効にする必要があります。
Scalaの場合:
val spark = SparkSession.builder
.master("local")
.appName("testing")
.enableHiveSupport() // <- enable Hive support.
.getOrCreate()
Pythonの場合:
spark = (SparkSession.builder
.enableHiveSupport()
.getOrCreate())
Spark <2.0:
Hive UDF( https://cwiki.Apache.org/confluence/display/Hive/LanguageManual+UDF を参照)を使用できるようにするには、Spark built Hiveのサポート(これは、ビルド済みのバイナリを使用する場合は既にカバーされています)は、SparkContext
を使用してHiveContext
を初期化します。
Scalaの場合:
import org.Apache.spark.sql.Hive.HiveContext
import org.Apache.spark.sql.SQLContext
val sqlContext: SQLContext = new HiveContext(sc)
Pythonの場合:
from pyspark.sql import HiveContext
sqlContext = HiveContext(sc)