2016-08-12 3 views
2

Я пытаюсь запустить pyspark на pycharm. Я связал все и установил переменные среды. Я могу читать sc.textFile, но когда я пытаюсь читать csv-файл из pyspark.sql, что-то пошло не так.win7 pyspark sql utils IllegalArgumentException

Вот код:

import os 
import sys 
from pyspark import SparkContext 
from pyspark import SparkConf 
from pyspark.sql import SQLContext 
from pyspark.sql import SparkSession 

# Path for spark source folder 
os.environ['SPARK_HOME']="E:/spark-2.0.0-bin-hadoop2.7/spark-2.0.0-bin-hadoop2.7" 
# Append pyspark to Python Path 
sys.path.append("E:/spark-2.0.0-bin-hadoop2.7/spark-2.0.0-bin-hadoop2.7/python") 
sys.path.append("E:/spark-2.0.0-bin-hadoop2.7/spark-2.0.0-bin-hadoop2.7/python/lib/py4j-0.10.1.zip") 


conf = SparkConf().setAppName('Simple App') 
sc = SparkContext("local", "Simple App") 
spark = SparkSession.builder.config(conf=SparkConf()).getOrCreate() 


accounts_rdd = spark.read.csv('test.csv') 
print accounts_rdd.show() 

Здесь ошибка:

Traceback (most recent call last): 
    File "C:/Users/bjlinmanna/PycharmProjects/untitled1/spark.py", line 25, in <module> 
    accounts_rdd = spark.read.csv('pmec_close_position_order.csv') 
    File "E:\spark-2.0.0-bin-hadoop2.7\spark-2.0.0-bin-hadoop2.7\python\pyspark\sql\readwriter.py", line 363, in csv 
    return self._df(self._jreader.csv(self._spark._sc._jvm.PythonUtils.toSeq(path))) 
    File "E:\spark-2.0.0-bin-hadoop2.7\spark-2.0.0-bin-hadoop2.7\python\lib\py4j-0.10.1-src.zip\py4j\java_gateway.py", line 933, in __call__ 
    File "E:\spark-2.0.0-bin-hadoop2.7\spark-2.0.0-bin-hadoop2.7\python\pyspark\sql\utils.py", line 79, in deco 
    raise IllegalArgumentException(s.split(': ', 1)[1], stackTrace) 
pyspark.sql.utils.IllegalArgumentException: u'java.net.URISyntaxException: Relative path in absolute URI: file:C:/the/path/to/myfile/spark-warehouse' 

Благодаря @Hyunsoo парк, я решил свою проблему следующим образом:

spark = SparkSession.builder\ 
    .master('local[*]')\ 
    .appName('My App')\ 
    .config('spark.sql.warehouse.dir', 'file:///C:/the/path/to/myfile')\ 
    .getOrCreate() 


accounts_rdd = spark.read\ 
    .format('csv')\ 
    .option('header', 'true')\ 
    .load('file.csv') 

При установке ваш конфиг, будьте осторожны с «//» в пути к файлу. Я не знаю, почему, когда я устанавливаю файл: C:/the/path/to/myfile, он не работает

ответ

3

Возможно, эта ссылка полезна.

http://quabr.com/38669206/spark-2-0-relative-path-in-absolute-uri-spark-warehouse

Короче говоря, есть параметр настройка spark.sql.warehouse.dir для установки хранилища папки. Если вы установите папку хранилища вручную, сообщение об ошибке исчезнет.

Сегодня я столкнулся с такой же проблемой. У меня нет проблем в ubuntu 16.04, но, когда я запускаю тот же код в Windows 10, вы получите сообщение об ошибке, подобное вам. Возможно, искра не может найти или сделать папку склада должным образом в окнах.

+0

Спасибо! Это очень помогает мне! Мой правильный код, показанный выше –

Смежные вопросы