spark 2.0にアクセスできました。この時点までspark 1.6.1を使用していました。誰かがpyspark(python)を使用してsparkSessionの設定を手伝ってくれますか?オンラインで利用可能なscalaの例は似ていることを知っています( here )が、python言語での直接的なウォークスルーを望んでいました。
私の特定のケース:zeppelin sparkノートブックのS3からavroファイルをロードしています。次に、dfを構築し、それらからさまざまなpyspark&sqlクエリを実行します。私の古いクエリはすべてsqlContextを使用しています。私はこれが悪い練習であることを知っていますが、ノートブックを
sqlContext = SparkSession.builder.enableHiveSupport().getOrCreate()
。
私はavrosで読むことができます
mydata = sqlContext.read.format("com.databricks.spark.avro").load("s3:...
問題なくデータフレームを構築します。しかし、データフレーム/一時テーブルのクエリを開始すると、「Java.lang.NullPointerException」エラーが引き続き発生します。これは翻訳エラーを示していると思います(たとえば、古いクエリは1.6.1で機能していましたが、2.0では調整する必要があります)。エラーはクエリの種類に関係なく発生します。だから私は仮定しています
1.)sqlContextエイリアスは悪い考えです
そして
2.)sparkSessionを適切にセットアップする必要があります。
だから誰かがこれがどのように行われるかを見せたり、あるいは異なるバージョンのsparkの間で彼らが知っている矛盾を説明したりできるなら、私はそれを大いに感謝します。この質問について詳しく説明する必要がある場合はお知らせください。複雑な場合はおizeび申し上げます。
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('abc').getOrCreate()
次に、使用できるいくつかの.csvファイルをインポートします
df=spark.read.csv('filename.csv',header=True)
ここから http://spark.Apache.org/docs/2.0.0/api/python/pyspark.sql.html
これを使用して、sparkセッションを作成できます。
>>> from pyspark.conf import SparkConf
>>> SparkSession.builder.config(conf=SparkConf())
scalaの例でわかるように、Spark Sessionはsqlモジュールの一部です。 Pythonでも同様です。したがって、 pyspark sql module documentation を参照してください
クラスpyspark.sql.SparkSession(sparkContext、jsparkSession = None)DatasetおよびDataFrame APIを使用したSparkプログラミングへのエントリポイント。 SparkSessionは、DataFrameの作成、DataFrameのテーブルとしての登録、テーブルに対するSQLの実行、テーブルのキャッシュ、および寄木細工のファイルの読み取りに使用できます。 SparkSessionを作成するには、次のビルダーパターンを使用します。
>>> spark = SparkSession.builder \
... .master("local") \
... .appName("Word Count") \
... .config("spark.some.config.option", "some-value") \
... .getOrCreate()
spark = SparkSession.builder\
.master("local")\
.enableHiveSupport()\
.getOrCreate()
spark.conf.set("spark.executor.memory", '8g')
spark.conf.set('spark.executor.cores', '3')
spark.conf.set('spark.cores.max', '3')
spark.conf.set("spark.driver.memory",'8g')
sc = spark.sparkContext