имя программы pyspark 'искра' не определено

Ниже программа выдает ошибку с именем "искра" не определено.

Traceback (most recent call last):  
File "pgm_latest.py", line 232, in <module>
    sconf =SparkConf().set(spark.dynamicAllocation.enabled,true)       
        .set(spark.dynamicAllocation.maxExecutors,300)        
        .set(spark.shuffle.service.enabled,true)       
        .set(spark.shuffle.spill.compress,true)
NameError: name 'spark' is not defined 
spark-submit --driver-memory 12g --master yarn-cluster --executor-memory 6g --executor-cores 3 pgm_latest.py

Код

#!/usr/bin/python
import sys
import os
from datetime import *
from time import *
from pyspark.sql import *
from pyspark
import SparkContext
from pyspark import SparkConf

sc = SparkContext()
sqlCtx= HiveContext(sc)

sqlCtx.sql('SET spark.sql.autoBroadcastJoinThreshold=104857600')
sqlCtx.sql('SET Tungsten=true')
sqlCtx.sql('SET spark.sql.shuffle.partitions=500')
sqlCtx.sql('SET spark.sql.inMemoryColumnarStorage.compressed=true')
sqlCtx.sql('SET spark.sql.inMemoryColumnarStorage.batchSize=12000')
sqlCtx.sql('SET spark.sql.parquet.cacheMetadata=true')
sqlCtx.sql('SET spark.sql.parquet.filterPushdown=true')
sqlCtx.sql('SET spark.sql.hive.convertMetastoreParquet=true')
sqlCtx.sql('SET spark.sql.parquet.binaryAsString=true')
sqlCtx.sql('SET spark.sql.parquet.compression.codec=snappy')
sqlCtx.sql('SET spark.sql.hive.convertMetastoreParquet=true')

## Main functionality
def main(sc):

    if name == 'main':

        # Configure OPTIONS
        sconf =SparkConf() \
            .set("spark.dynamicAllocation.enabled","true")\
            .set("spark.dynamicAllocation.maxExecutors",300)\
            .set("spark.shuffle.service.enabled","true")\
            .set("spark.shuffle.spill.compress","true")

sc =SparkContext(conf=sconf)

# Execute Main functionality

main(sc)
sc.stop()

person Satish Kumar Reddy    schedule 15.07.2016    source источник
comment
Ваша трассировка не соответствует вашему коду ... Например, вы не указали spark.dynamicAllocation.enabled, поэтому spark не определен как переменная python   -  person OneCricketeer    schedule 16.07.2016


Ответы (3)


Я думаю, вы используете более старую версию Spark, чем 2.x.

вместо этого

spark.createDataFrame(..)

используйте ниже

> df = sqlContext.createDataFrame(...)
person Beyhan Gul    schedule 07.03.2017

Например, если вы знаете, где установлена ​​искра. например:

/home/user/spark/spark-2.4.0-bin-hadoop2.7/
├── LICENSE
├── NOTICE
├── R
├── README.md
├── RELEASE
├── bin
├── conf
├── data
├── examples
├── jars
├── kubernetes
├── licenses
├── python
├── sbin
└── yarn

Вы можете явно указать путь к установке Spark внутри метода .init

#pyspark
findspark.init("/home/user/spark/spark-2.4.0-bin-hadoop2.7/")
person Buthetleon    schedule 30.03.2019

Здесь вам пригодится модуль FindSpark.

Установите модуль со следующим:

python -m pip install findspark

Убедитесь, что установлена ​​переменная среды SPARK_HOME.

Использование:

import findspark
findspark.init()
import pyspark # Call this only after findspark
from pyspark.context import SparkContext
from pyspark.sql.session import SparkSession
sc = SparkContext.getOrCreate()
spark = SparkSession(sc)

print(spark)
person c0degeas    schedule 30.03.2019