
spark
百物易用是苏生
企鹅小兵,搞搞大数据
展开
-
spark的cache/persist与checkpoint区别简单小结
参考文章:https://blog.youkuaiyun.com/ljp812184246/article/details/53897613提炼结论:1. cache就是persist,计算的时候快照一份到内存中,计算不下可以设置溢写到磁盘;默认只缓存到内存(若果内存不够,放不下会根据血缘系统计算缺失的部分),当driver(sparkContext)结束就没了(包括磁盘上 的数据);用于同一个submit提交任务中经常使用的中间rdd2. checkpoint就是相当于copy计算一份rdd到磁盘上.原创 2021-01-19 18:50:48 · 478 阅读 · 0 评论 -
SQL的join与spark join区别
spark中想到了对右表中数据小于开启广播的大小,会自动优化;但是不确定是否左边表也能够自动检测小于并优化为广播;还想到了对sql的支持,在语法上,SQL中是小表在前(左表)驱动大表;然后还有sql中对in/exists/not in/not exists的使用推荐;#这里计简要结论 默认left join形式1. spark在join中只能对右表进行广播,并且要开启广播,数据小于配置 spark.broadcast.blockSize(默认4M,注意磁盘与内存中数据大小可能不一样,压不压缩也原创 2021-01-15 14:08:41 · 324 阅读 · 0 评论 -
pyspark中存储完数据后同时创建hive外部表
有需求,各种批处理完数据,因部分分析人员不具备spark的能力,比较熟悉sql环境操作需要每个批处理的统计数据文件都能用sql查询,现阶段zeppelin下hive/presto两种都是类sql供分析人员使用下面是zeppelin中pyspark下的简便离子,真实环境,需要hadoop+hive+spark环境并在spark提交时开启hive支持注意:千万不要想当然认为数据类型,在另外的地方写创建表和添加分区,比如默认计算都是bigint,如果在hive中用int创建不报错,但是使用查询会报错原创 2021-01-08 18:59:48 · 595 阅读 · 0 评论 -
pyspark出现异常 ValueError: too many values to unpack
ValueError: too many values to unpack这是python的错误,例如赋值时:a,b=(1,2,3) #就会出现ValueError: too many values to unpack而我的spark代码中是使用reduceByKey之前的map(lambda x:(x[0]+"|"+x[1]))中漏掉了第二列赋值1,所以传参不对,造成该错误...原创 2019-07-01 15:21:04 · 1579 阅读 · 0 评论 -
window中的zeppelin配置pyspark
前提:java8、scala、spark、python、zeppelin都安装好了(本地单机spark可以不用hadoop的),可参考我之前的各个安装文档一:zeppelin的pyton interpret中配置信息如果path中没有配置python的环境变量,即cmd随便一个目录输入python 无法出现python版本信息和交互命令行,说明未配置,需要设置zeppelin.python...原创 2019-07-07 18:31:51 · 2209 阅读 · 0 评论 -
pyspark rdd的combineByKey的高级API使用方法,多行按某列合为一行
combineByKey是比较底层的高级用法,如dataframe或rdd的groupby,rdd的reduce、reduceByKey等都依赖与它。combineByKey入参是三个function函数,分别针对单个的(k,v)转为(k,c)新的一行对象,(k,c)与(k,v)的合并,(k,c)与(k,c)的合并,最终整体转化为(k,c)这样的新键值对集合最简单的示例:https://sp...原创 2019-07-02 11:09:01 · 804 阅读 · 0 评论 -
window下jupyter(anaconda)中使用findspark配置spark
上一篇讲完zeppelin配置spark,zeppelin启动太慢了,经常网页上interpreter改着就卡死,需要后面zeppelin.cmd窗后点击才有反应,而且启动贼慢。因为本来就安装了Anaconda2,索性给jupyter也配置上spark;查阅资料有两类: 方法一:给jupyter 安装上jupyter-scala kernerl 和jupyter-spark ...原创 2019-07-07 19:24:47 · 7171 阅读 · 0 评论 -
pyspark rdd中按其中一列分割拆分后转为多行
dataframe也有按某列中按分隔符转成多行的函数,不过dataframe比rdd所需资源更多,所以此处先些rdd的按某列拆分转为多行dataframe的详见https://spark.apache.org/docs/2.3.1/api/python/pyspark.sql.html#pyspark.sql.DataFrame 的pyspark.sql.functions.explode(co...原创 2019-07-02 12:37:33 · 5356 阅读 · 0 评论 -
pyspark出现 sc._jvm.fuctin.xxx(_to_java_column(col),options) NoneType object has no attriue '_jvm'异常解决
通常 ‘NoneType’ object has no attriue ‘_jvm’ 让人摸不着头脑,但是该异常信息上面一般会打印一些信息,其中:会有jc = sc._jvm.fuctin.xxx(_to_java_column(col),options)的样子xxx是不定的原因是map或其他元算算子中调用的某个方法有问题,不适用像我的程序中出的问题是因为from pyspark.s...原创 2019-07-02 12:51:15 · 1871 阅读 · 1 评论 -
ValueError: Some of types cannot be determined by the first 100 rows, please try again with sampling
pyspark 中跑完一个resultrdd=rdd.filter(),再toDF(*columns)时出现如标题异常:ValueError: Some of types cannot be determined by the first 100 rows, please try again with sampling后发现resultrdd.count()只有一条resultrdd.co...原创 2019-06-28 17:03:43 · 573 阅读 · 0 评论 -
window下安装单机的spark
前提条件:java 8、scala已经安装完毕而hadoop得安装是需要yarn管理或访问hdfs分布式文件集群时才需要安装,单机版可以考虑不安装hadoop,仅仅安装sparkspark官网:http://spark.apache.org/downloads.html下载完spark-2.4.3-bin-hadoop2.6.tgz 后直接解压文件即可,然后设置环境变量...原创 2019-07-06 17:56:05 · 689 阅读 · 0 评论 -
spark RDD saveAsTextFile没有设置重复写入的参数,只能用hdfs先删再写
spark RDD saveAsTextFile(path)也是调用的 hdfs的saveAsHadoopFile函数,但是并没有什么标志设置是否重写。所以可以在代码中用hadoop的删除文件代码模块执行后,再写入。(方案一:判定文件路径是否存在,存在则删除,方案二:try catch包含删除操作代码,然后再删除)//spark scalaimport apache.hadoop....原创 2019-08-21 09:27:05 · 4651 阅读 · 0 评论 -
zeppelin中spark在scala、java、python段中的变量共享(zeppelin)
scala优势在于工程上线,效率高、稳定。python(pyspark)优势在于快速分析、搭建原型。在做一些简要任务时没有形成最终的工程任务,仅在于pyspark分析,但是有些功能只能scala的API才提供支持。所以这时候需要scala与python可以进行变量共享(全局变量)此也主要记录别人的例子,因为相关资料少,搜索也费了一点功夫,便于后续快速查找使用。apache-zeppel...原创 2019-09-24 16:13:49 · 788 阅读 · 0 评论 -
【spark】十一 sql.functions.lit() 实现给DataFrame添加一列值
直接df.withColumn(“time”,“201905”) 会报错,说没有引用其他列值之前一直用的 df.withColumn(“time”,col(“age”)-col(“age”)+201905)的变种方式或者 df.rdd.map(lambda x:(x[0],x[1],x[2],“201905”)).toDF([“name”,“sex”,“age”,“time”])的rdd方式...原创 2019-05-22 16:08:30 · 13749 阅读 · 0 评论 -
【pyspark】三 TypeError: Can not infer schema for type: type ‘str‘ 问题
环境 spark 2.3.1 zeppelin中%pyspark python 2.7TypeError: Can not infer schema for type: <type 'str'>多个rdd union之后,toDF().write.csv(path)出现如上异常即不能推断出类型。测试toDF().show()也不行后发现是多个rdd间,列数不一致,导致t...原创 2019-05-17 10:49:20 · 11093 阅读 · 0 评论 -
【pyspark】一 spark dataframe 读写parquet、json、csv等文件
pyspark 读写文件环境:zeppelin中的spark 2.1 的notebook提交的代码pyspark 读 jsondataframe = spark.read.format(“json”).load("/tmp/testhdfsfile") #路径是hdfs上的注意json文件中,一条记录是一条json,不能换行,格式如下:{“row”:“1”,“field1”:“valu...原创 2019-04-10 18:44:19 · 6898 阅读 · 6 评论 -
【pyspark】二 给dataframe添加列并自动编号 注意事项
pyspark的自动编号:pyspark.sql.functions.monotonically_increasing_idfrom pyspark.sql.functions import monotonically_increasing_idtempdf_index=tempdf.withColumn(“id”,monotonically_increasing_id())tempdf_i...原创 2019-04-10 19:00:17 · 4730 阅读 · 0 评论 -
【spark】一 spark on yarn的日志查看
spark on yarn (ambari + zeppelin)查看日志 (安全因素,端口映射不够用)日志三种方式:①yarn 的 hadoop的端口页面 url(ip:8084/cluster/app/application_15xxxx_001) 中可看到Log下面 带连接:xxhost:8042/node/containerlogs/container_e09_applicatio...原创 2019-04-15 16:59:26 · 4673 阅读 · 0 评论 -
【spark】四 DataFrame.distinct()操作也应当优化为RDD操作
最好可以用RDD的就不要用DataFrame今日就遇到执行出现 SparkContext异常停止,怀疑是DataFrame的distinct操作和groupby一样并不在本地合并为最小集,导致最后崩溃;而后换成RDD.distinct()却是可以的。经多次测试都是以上结论测试数据 一亿两千万条结论:能用RDD的相关操作,就别用DataFrame,比如排序、统计count、disti...原创 2019-04-25 20:10:12 · 4917 阅读 · 2 评论 -
【spark】二 reduceByKey、reduceByKeyLocally、groupByKey、combineByKey、aggregateByKey 区别 [待补充]
DataFrame pyspark 只有groupByKey,容易在shuff中爆掉,改用RDD的reduceByKey、aggregateByKey相关算子对类似实现sql的group by的相关算子进行区别分析原创 2019-04-25 19:07:25 · 952 阅读 · 0 评论 -
【spark】三 python 用RDD.reduceByKey 方法实现 count(value),count(distinct value) [待验证]
需求zeppelin的pyspark中 DataFrame.groupBy(*cols).agg()操作大数据量会爆内存。推荐用RDD.reduceByKey()但是这个只能对两列,以第一列为key,第二列为value。而且在同一个task上,同partition的数据先是同key的valfue进行合并操作,以此大大减少后面shuff的数据量。本来想实现select groupkey,co...原创 2019-04-17 19:43:52 · 2965 阅读 · 0 评论 -
【spark】五 RDD、DataFrame.write 存储API的使用与区别
主要翻译自 官网 pyspark 2.3.1 文档https://spark.apache.org/docs/2.3.1/api/python/pyspark.html#pyspark.RDD一 pyspark.RDD 保存hdfs文件①saveAsHadoopDataset(conf, keyConverter=None, valueConverter=None)输入RDD[(K,V)]...原创 2019-04-28 17:20:17 · 8074 阅读 · 0 评论 -
【spark】六 DataFrame.summary() 中百分比统计探索
在分析账号登陆异常的阈值分布取舍时,例如同phone每日登录次数分布,假定有1%、0.1%异常坏人,需要找个阈值切割点。之前看到pandas的DataFrame有summary(),然后看spark的DataFrame也有,本以为可以很好的使用。但是发现了一个问题,就是异常点的用户数都很小,造成条数很多,对ip_cnt的个数用阈值取0.1% 1% 5% 都是 ip_cnt=1,而且我也按 95...原创 2019-05-07 15:18:49 · 4500 阅读 · 0 评论 -
【spark】八 自己实现 RDD中 某列 累计百分比确定阈值
数据样例(含实现数据)timelogin_cntip_cntip_cnt_addpercenter1903151564225642256422/sum190315249422105844105844/sum190315336422142266142266/sum190315420000162266162266/sum...原创 2019-05-17 21:03:28 · 1061 阅读 · 0 评论 -
【spark】七 DataFrame的repartition、partitionBy、coalesce区别
环境:spark 2…3.1 python 2.7问题:发现spark DataFrame.write 无论format(“csv”).save(hdfsPath)中是csv、parquet、json,或者使用write.csv() write.json()保存之后都是一个目录,下面生成很多个文件,只有设置分区为一个时,才能在目录下只有一个.success文件和一个分区数据文件(即小文件数据文...原创 2019-05-15 09:24:58 · 14423 阅读 · 5 评论 -
【spark】九 zeppelin的pyspark 进行sys.setdefaultencoding("utf8")导致print、DataFrame.show()等打印输出结果失效
因为遇到了一个 ascii 的字符 无法 在0~128 range 间找的的问题;便使用了 import sys reload(sys) sys.setdefaultencoding('utf8')来解决。然后发现zeppelin的pyspark后面,输出不了东西进行显示了。只有报错的时候才能显示出东西。多方调整测试后,回溯发现是设置了python系统编码导致的,进过重启zeppe...原创 2019-05-21 13:42:29 · 780 阅读 · 0 评论 -
【spark】十 DataFrame min、max、sum必须要用到is not anaggregate function错误,怎么处理
DataFrame.select(min(substring(col("A"),2,8)),max(substring(col("A"),2,8)),sum(col("B"))) 报错提示需要aggregate by信息是我用错了,不能使用col("A")来取A列的值再substring,应该直接用substring("A",2,8) 取a列的第二个字符起的八位字符,取最大值、最小值做时间...原创 2019-05-21 16:31:48 · 6259 阅读 · 0 评论