2017-10-13 6 views
0

저는 불꽃 버전 2.2.0, & Python 2.7을 사용하고 있습니다. pyspark &을 사용하여 BigSQL을 연결하려고합니다. 다음은 내가 피클 스파크 분산 객체로 할 수없는 내가 오류 메시지가Pyspark 오류 + 메서드 __getnewargs __ ([])가 존재하지 않습니다.

Py4JError: An error occurred while calling o79.__getnewargs__. Trace: 
py4j.Py4JException: Method __getnewargs__([]) does not exist 
    at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:318) 
    at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:326) 
    at py4j.Gateway.invoke(Gateway.java:272) 
    at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132) 
    at py4j.commands.CallCommand.execute(CallCommand.java:79) 
    at py4j.GatewayConnection.run(GatewayConnection.java:214) 
    at java.lang.Thread.run(Thread.java:748) 

답변

2

받고 있어요 코드를 실행 한 후

import cPickle as cpick 
import numpy as np 
import pandas as pd 
import time 
import sys 
from pyspark.sql.session import SparkSession 
spark = SparkSession.builder.getOrCreate() 
spark_train_df = spark.read.jdbc("jdbc:db2://BigSQL URL:Port:sslConnection=true;","Schema.Table", 
      properties={"user": "my userid", 
         "password": "password", 
         'driver' : 'com.ibm.db2.jcc.DB2Driver'}) 
spark_train_df.registerTempTable('data_table') 
# query to get columns necessary to create indexes 
sql = "select * FROM data_table" 
train_df = spark.sql(sql) 

cmr_dict = { 'date': time.strftime('%a, %b %d, %Y'), 
      'description': '`cmrs` contains data from data_table', 
      'cmrs': train_df} 

with open('cmrs.pkl', mode='wb') as fp: 
    cpick.dump(cmr_dict, fp, cpick.HIGHEST_PROTOCOL) 

를 사용하는 코드입니다. 이들은 JVM 구조에 대한 프록시 일 뿐이며 데이터를 포함하지는 않습니다 (계산에 대한 설명 만 포함).

데이터를 피 클리닝하고 결과를