Pyspark

It appears that you are attempting to reference SparkContext from a broadcast " Exception: It appears that you are attempting to reference SparkContext from a broadcast variable, action, or transforamtion. SparkContext can only be used on the driver, not in code that it run on workers. For more information, see SPARK-5063.

这是因为我def了一个函数,在里面引用了外部的一个SparkContext,这个SparkCotext并没有关闭;于是在def里面又重新定义了一个SparkContext,来处理后续处理

KeyError: ‘SPARK_HOME‘

需要在使用SparkContext之前声明:

os.environ[‘SPARK_HOME‘] = ‘/opt/cloudera/parcels/CDH/lib/spark‘

SyntaxError: Non-ASCII character ‘\xef‘ in file 错误解决

在文件头添加上

# -*- coding: UTF-8 -*-

即可,保证编码是UTF8的编码;否则如果有中文等特殊字符的文件,保存后格式将会出现异常

‘dict‘ object has no attribute ‘setIfMissing‘

之前采用conf=‘‘‘{...}‘‘‘的写法,这种写法其实就是一个字典,所以没有setIfMissing函数(只有SparkConf里面才有setIfMissing函数);后来改变为conf.set("spark.speculation", "false")方式,但是又发现了下面的错误:

‘SparkConf‘ object has no attribute ‘items‘

后来修改了方式,不再向SparkContext中传入配置文件,而是在最后saveAsNewDataSet中传入的时候再传入json格式的config

再后来发现--jars方式引入的jar无法在def函数中进行使用;于是改用了for的方式,但是这个时候,里面定义新的SparkContext有发生的问题:

Cannot run multiple SparkContexts at once;

于是有修改for语句中的sparkContext为for外部的那个已经定义的SparkContext

java.lang.ClassCastException: java.lang.String cannot be cast to java.util.ArrayList

sc.parallelize([sys.argv[3:]]).map(lambda x: (x[0], x)),这个异常是因为对于这句话的理解,因为早期我做的是一条记录的插入,所以脑海中始终以为parallelize里面就是一个数组,或者说只接受一个数组,但是其实[parm[0:]]的真实含义是数组的元素是一个数组;你可以理解为接收的一个行的集合,内部数组的每个元素都对应一列,外部数组每个元素都对应一行。lambda x: (x[0], x)其实就是一个以rowkey(x[0])作为主键,其他元素x(x是一个多维数组,每个维度代表一列)作为value的组织形式。

参看一下我之前报错的时候的写法:

sc.parallelize([rowNum, column_family, column_quality, value]).map(lambda x: (x[0], x)),其实Convert接收的一个多为数组,但是如果是上述定义,参数是String。

解决的方式:百思不得其解之际,因为有成功案例(只不过对于成功案例理解不深),于是我尝试仿照成功案例的写法,而不是自己的理解的写法,将sc.parallelize([rowNum, column_family, column_quality, value])改写为:

parm=[rowNo, column_family, quality_column, value]

sc.parallelize([parm[0:]]).map(lambda x: (x[0], x))

一运行,发现OK了。

时间: 2024-10-07 12:31:07

Pyspark的相关文章

shape into blocks--source code in python based on pySpark

这是微博深度和广度预测的原始代码,写了大约半个月,第一个版本不是这样的,但是这个版本包含所有需要的功能. 模块化的程度也更高.找工作前一直想用python完美解决这个问题,后来发现自己的方法和硬件都有很大的局限. 算是我的第一次正儿八经的尝试在分布式计算的框架下,计算海量的数据. 意识到很多问题,影响我面试时候很多的代码风格. def get_basic_info(): win_path = "E:/spark/weibo_predict/" linux_path = "/h

pyspark原理简介

概述 这是前段时间在看spark的python支持的时候,简单过了一下pyspark里的python代码,整理了一个大致流程.虽然几乎不会python,但基本上能看懂pyspark是怎么让不同虚拟机之间传输数据的.如何在python环境调用java类的.pyspark SDK的丰富程度取决于什么.需要做些什么流程和封装等. 我看了下,应该只有Pyspark Internals这篇wiki里介绍了pyspark的实现机制,大体是下面这张图就可以表示: 在python driver端,SparkCo

python实例pyspark

%pyspark #查询认证用户 import sys#import MySQLdbimport mysql.connectorimport pandas as pdimport datetimeimport time optmap = {                'dbuser' : 'haoren',                'dbpass' : 'G4d',                'dbhost' : '172.12.112.5',                'db

pyspark中使用累加器Accumulator统计指标

评价分类模型的性能时需要用到以下四个指标 最开始使用以下代码计算,发现代码需要跑近一个小时,而且这一个小时都花在这四行代码上 # evaluate model TP = labelAndPreds.filter(lambda (v, p): (v == 1 and p == 1)).count() FP = labelAndPreds.filter(lambda (v, p): (v == 0 and p == 1)).count() TN = labelAndPreds.filter(lamb

pyspark使用ipython

在Ubuntu下,安装ipython很简单: $sudo apt-get install ipython 在bash env中添加变量: export IPYTHON=1 export IPYTHON_OPTS=" " 再次使用,已经是ipython了! $SPARK_HOME/bin/pyspark

Anaconda中配置Pyspark的Spark开发环境

1.windows下载并安装Anaconda集成环境 https://www.continuum.io/downloads 2.在控制台中测试ipython是否启动正常 3.安装JDK 3.1环境变量配置: 3.2测试: 4.安装Spark并配置环境变量 4.1 URL: http://spark.apache.org/downloads.html 4.2解压到本地磁盘的对应目录 4.3配置环境变量 5.Pyspark配置 5.1配置如下系统变量    5.2修改spark\conf下的spar

python pyspark入门篇

一.环境介绍: 1.安装jdk 7以上 2.python 2.7.11 3.IDE pycharm 4.package: spark-1.6.0-bin-hadoop2.6.tar.gz 二.Setup 1.解压spark-1.6.0-bin-hadoop2.6.tar.gz 到目录D:\spark-1.6.0-bin-hadoop2.6 2.配置环境变量Path,添加D:\spark-1.6.0-bin-hadoop2.6\bin,此后可以在cmd端输入pySpark,返回如下则安装完成: 3

使用Pyspark编写wordcount程序

# Word count on manuscript using PySpark # import regex moduleimport re# import add from operator modulefrom operator import add # read input filefile_in = sc.textFile('/home/an/Documents/A00_Documents/Spark4Py 20150315') # count linesprint('number o

[pySpark][笔记]spark tutorial from spark official site在ipython notebook 下学习pySpark

+ Spark Tutorial: Learning Apache Spark This tutorial will teach you how to use Apache Spark, a framework for large-scale data processing, within a notebook. Many traditional frameworks were designed to be run on a single computer. However, many data

PyCharm 远程连接linux中Python 运行pyspark

PySpark in PyCharm on a remote server 1.确保remote端Python.spark安装正确 2.remote端安装.设置 vi /etc/profile添加一行:PYTHONPATH=$SPARK_HOME/python/:$SPARK_HOME/python/lib/py4j-0.8.2.1-src.zipsource /etc/profile # 安装pip 和 py4j 下载pip-7.1.2.tartar -xvf pip-7.1.2.tarcd