• 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了。
  • 相关阅读:
    mongodb 的云数据库产品 mlab 的使用
    koa 项目实战(十一)验证登录和注册的 input
    koa 项目实战(十)使用 validator 验证表单
    koa 项目实战(九)passport验证token
    koa 项目实战(八)生成token
    koa 项目实战(七)登录接口
    koa 项目实战(六)注册接口加密
    koa 项目实战(五)全球公用头像的使用
    [C++] 用Xcode来写C++程序[4] 函数
    [控件] 将字符串转换成贝塞尔曲线并执行动画
  • 原文地址:https://www.cnblogs.com/xiashiwendao/p/7398118.html
Copyright © 2020-2023  润新知