
PySpark学习日志
大胖头leo
这个作者很懒,什么都没留下…
展开
-
pyspark join 出现重复列的问题
对于dataframe df1,df2df3=df1.join(df2,df1.device_number=df2.device_number,"inner")df3就会出现两个相同列 device_number此时改成df3=df1.join(df2,“device_number”,"inner")就只有一个device_number了如果想多列key则df.join(df4, ['name', 'age'])...原创 2020-09-14 23:15:55 · 3507 阅读 · 0 评论 -
Spark DataFrame 读取 text(文本文件)乱码
目前,Spark 2.4.3 读取 text(文本文件)的时候,只支持 UTF-8 编码,如果是其他编码(例如 GBK),返回的 DataFrame 会出现乱码。import org.apache.spark.sql.functions.{col, decode}spark.read.format("text").load(filePath).select(decode(col("value"), encoding).as("value"))...原创 2020-08-07 18:53:31 · 1733 阅读 · 0 评论 -
spark dataframe所有列
#返回dataframe的所有列名dataFrame.schema.fields.map(f =>f.name).toList原创 2020-07-26 23:26:08 · 726 阅读 · 0 评论 -
Spark集成Kudu的限制和已知问题
https://kudu.apache.org/docs/developing.html#_spark_integration_known_issues_and_limitationsKudu tables with a name containing upper case or non-ascii characters must be assigned an alternate name when registered as a temporary table. Kudu tables with a原创 2020-07-26 22:53:21 · 399 阅读 · 0 评论 -
使用PySpark操作kudu
初始化sparkfrom pyspark.sql import SparkSessionspark = SparkSession.builder.appName('kudu_read').getOrCreate()读取kudu表df=spark.read.format("org.apache.kudu.spark.kudu") \ .option("kudu.table", "kudutable") \ .option(原创 2020-07-26 22:27:38 · 1238 阅读 · 2 评论 -
spark运行报错:java.io.IOException: (null) entry in command string: null chmod 0644(windows 环境)
window上运行spark程序出现java.io.IOException: (null) entry in command string: null chmod 0644解决方法:下载hadoop.dll文件,拷贝到c:\windows\system32目录中即可hadoop.dll可以在github上下载:https://github.com/4ttty/winutils各个版本的hadoop.dll好像是通用的。百度网盘链接:https://pan.baidu.com/s/12原创 2020-07-26 21:57:21 · 2576 阅读 · 4 评论 -
【SparkSQL】partitionColumn, lowerBound, upperBound, numPartitions如何加速数据库抽取(oracle)
在SparkSQL中,读取数据的时候可以分块读取。例如下面这样,指定了partitionColumn,lowerBound,upperBound,numPartitions等读取数据的参数。简单来说,就是并行读取。关于这四个参数的意思,SparkSQL官方解释是:Property Name Meaning partitionColumn, lowerBound, upperBound These options must all be specified if any ...原创 2020-06-28 17:28:31 · 1210 阅读 · 1 评论 -
Pyspark Dataframe 根据一个list的内容来 filter
意思就是df.filter(df.name in [a,b,c,d,e,f,g]) 大概这个意思from pyspark.sql.functions import coldf.filter(col("name").isin(a_list)).show()原创 2020-06-23 14:16:38 · 5820 阅读 · 0 评论 -
pyspark Dataframe添加一列常量列
比如添加1列 “0”使用from pyspark.sql.functions import litdm.withColumn('Flag_last_entry',lit(0))\ .withColumn('Flag_2',lit(0))原创 2020-06-23 13:22:49 · 4055 阅读 · 0 评论 -
Spark Dataframe 和 Pandas dataframe 互相转化
spark dateframe 到pandas dataframepandas_df = schemaPeople.toPandas()pandas dateFrame 转换成 sparkDatefreamesparkdataframe = spark.createDataFrame(pandas_df)sparkdataframe = spark.createDataFrame(pandas_df,schema)原创 2020-06-22 22:30:42 · 1843 阅读 · 0 评论 -
pyspark 连接oracle错误:java.sql.SQLException: No suitable driver
spark.read.format()出错py4j.protocol.Py4JJavaError: An error occurred while calling o26.load.: java.sql.SQLException: No suitable driveroracle:1. Oracle数据库在安装后一般会在$ORACLE_HOME/jdbc/lib目录中放置ojdbc*.jar等jar文件,将这些文件复制到spark集群服务器上,比如$SPARK_HOME/jars/中,然后.原创 2020-06-22 22:20:13 · 797 阅读 · 0 评论 -
pyspark 读取csv文件创建DataFrame的两种方法
方法一:用pandas辅助from pyspark import SparkContext from pyspark.sql import SQLContext import pandas as pd sc = SparkContext()sqlContext=SQLContext(sc) df=pd.read_csv(r'game-clicks.csv') sdf=sqlc.createDataFrame(df)方法二:纯sparkfrom pyspark import Spa原创 2020-06-18 17:00:48 · 1218 阅读 · 0 评论 -
Yarn-AM-资源不足异常、和spark作业问题
Application is added to the scheduler and is not yet activated. Queue's AM resource limit exceeded. Details : AM Partition = 3ssystem; AM Resource Request = <memory:4096, vCores:1>; Queue Resource Limit for AM = <memory:6144, vCores:3>; User A.原创 2020-06-18 16:58:41 · 5085 阅读 · 0 评论 -
Spark警告Neither spark.yarn.jars nor spark.yarn.archive is set
同理问题https://blog.youkuaiyun.com/a8131357leo/article/details/100774694?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159232809119724846413808%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=15923280911972484641转载 2020-06-17 01:35:00 · 773 阅读 · 0 评论 -
Spark问题汇总
1. Java版本不一致,导致启动报错。# 解决方法:在启动脚本最前边添加系统参数,指定Java版本export JAVA_HOME=/usr/java/jdk1.8.0_181-amd64/jre2. Spark1和Spark2并存,启动时报错。# 在SPARK_HOME中指定启动的spark版本export SPARK_HOME=/data01/opt/cloudera/parcels/SPARK2-2.3.0.cloudera3-1.cdh5.13.3.p0.458809/lib原创 2020-06-12 15:17:22 · 664 阅读 · 0 评论 -
Spark streaming 的checkpoint
由于 Spark streaming原则上来说是要一直运行的, 所以需要的一个机制从streaming过程中如果出错了时候能够正常恢复,这时候就需要checkpoint。由于系统要从checkpoint的点恢复, 所以必须要保证 保存checkpoint的文件系统是可靠的。 于是本地文件系统 ntfs/ext4 这样不适合作为保存 checkpoint的系统。 而HDFS,这样的分布式...原创 2019-03-08 16:38:47 · 190 阅读 · 0 评论 -
Spark Streaming的改进word count例子
Spark Streaming 里提供的wordcount有点太简单了,做了一次实在时没啥感觉,所以我稍微弄的复杂了一点,通过这个让我对streaming 有更好的理解wordcount功能:通过socket向Spark APP发送一串数字字符(“,“分割),然后将数字转换 Int格式并 进行计数, 如果输入的不是数字,Spark APP报错并停止APPsocket 文件 ...原创 2019-09-18 02:20:13 · 318 阅读 · 0 评论 -
Spark Streaming:RDD,Batch, Dstream, Partitiion到底是什么
https://spark.apache.org/docs/2.2.0/streaming-programming-guide.html其实spark doc写的挺好,我这就把他概括一下,写一些让我迷惑的问题点:RDD:RDD就算是spark里最基本的处理单位,算是spark定义的一种数据结构(是分布式的)-------她是Immutable的,一旦生成了,就不能改其实想想...原创 2019-09-19 03:03:08 · 1169 阅读 · 0 评论 -
Pyspark Streaming: wordcount计数(2)
学习spark 写一个wordcount计数的功能同流接受数据,并计数,然后生成一个dictionary, 记录每个数字从开始到现在出现了多少次。Update Functiondef updateFunction(newValues, runningCount): #对于不存在的Key,他的value就是None if runningCount is Non...原创 2019-09-19 03:25:20 · 520 阅读 · 0 评论 -
Pyspark: Append output mode not supported when there are streaming aggregations on streaming
使用withwatermark时报错An error occurred while calling o2837.start.: org.apache.spark.sql.AnalysisException: Append output mode not supported when there are streaming aggregations on streaming DataFram...原创 2019-09-23 05:12:50 · 2338 阅读 · 0 评论 -
Spark Structured Stream: 输出格式(file,foreach,console,memory)
当流数据处理完成后,有若干个模式将结果导出1.kafka,我不用kafka 贴一个指导链接把https://spark.apache.org/docs/latest/structured-streaming-kafka-integration.html2.file(文件导出):可以将流处理的结果导出到文件结果query = wordCounts \ .write...原创 2019-09-23 14:01:26 · 1866 阅读 · 0 评论 -
Spark Structured Stream: 输出模式(append,update,complete)
1.complete:每一个trigger到来时,就输出整个完整的dataframe完整的不是说这个时间点的完整的dataframe,而是从开始流到结束的所有的dataframe,效果大概是这样的这个时window下的,如果非window的话还是一个完整的sink,所以window下容易内存爆炸。。用的时候要注意2. append只输出新添加的(原来没有的)Row()(...原创 2019-09-23 14:20:42 · 3493 阅读 · 0 评论 -
使用python Socket为SparkStreaming 提供数据 (socket.error: [Errno 48] Address already in use)
这里写一个例子,利用socket为 Spark Stream提供数据socket.error: [Errno 48] Address already in use需要把so_reuseaddr设置为1,这样在关闭socket对象后可以重复使用地址import socketfrom time import sleephost = 'localhost'port = 9999s ...原创 2019-09-17 04:47:38 · 593 阅读 · 1 评论 -
Spark 从RDD构建Dataframe
from pyspark.sql.types import StringType,StructField,StructTypeStructField:用来生成dataframe的列名(fields)根据数据来生成fields,少的时候可是徒手输入,多了就要自动构建了fields = [StructField("f"+str(i),StringType(),True) for i...原创 2019-09-16 02:00:03 · 574 阅读 · 1 评论 -
Hadoop3.x,Spark 2.4配置--我遇到的问题汇总
配置Spark 绝对是一个扎心的过程,配置到你怀疑人生, 打算把大多的问题都记录下来,就当作记录遇到的坑Table of ContentsWARN scheduler.TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that worker...原创 2019-09-07 23:53:03 · 1953 阅读 · 0 评论 -
pyspark 启动命令汇总 local、yarn、standalone
Table of Contents0. 启动Pyspark1.Hadoop Yarn 启动 pyspark2.Spark Standalone模式运行 pyspark3. 从Jupyter启动Pyspark1. spark-submit启动命令实在是太多了。。记录下0. 启动Pyspark默认情况下,pyspark 会以 spark-shell启动...原创 2019-09-07 21:33:08 · 6376 阅读 · 1 评论 -
PySpark 关闭不用的INFO信息
执行Spark程序的时候 会显示很多的INFO, 但有时候会显得狠乱,我就找不到我的输出了Log 文件的设置在 org.apache.log4j 下def setLogger( sc ): # 选择log4j文件 logger = sc._jvm.org.apache.log4j logger.LogManager.getLogger("org"). setLevel(...原创 2019-03-20 11:20:32 · 2249 阅读 · 0 评论 -
SparkContext,SparkConf 和 SparkSession
SparkContext,SparkConf在Spark2.0之前, SparkContext 是所有 Spark 功能的结构, 驱动器(driver) 通过SparkContext 连接到集群 (通过resource manager), 因为在2.0之前, RDD就是Spark的基础。如果需要建立SparkContext,则需要SparkConf,通过Conf来配置SparkContex...原创 2019-03-05 08:06:26 · 2590 阅读 · 0 评论 -
本地local模式 查看SPARK UI
如果是shell里在这你就能找的你的本地地址如果是在jupyter 这样的IDE里spark.sparkContext.uiWebUrl原创 2019-03-01 12:13:08 · 4068 阅读 · 0 评论 -
PySpark DataFrame
在python中 RDD需要从Py4j 启动一个 JVM, 所有的RDD转换最开始都要映射到 JAVA中的pythonRDD对象,所以 Python和JVM之间的频繁切换,通信会有很多的而外开销。Dataframe 则提高了PySpark的查询性能Table of Contents创建DataFrameJSON转DataFramePandas与DataFrame的转换...原创 2019-03-01 12:08:01 · 400 阅读 · 0 评论 -
RDD.collect(),take(), first
RDD.take(),RDD.first().collect() 方法把RDD的所有元素返回给驱动,驱动将其序列化成了一个列表.take() 返回前几个元素原创 2019-02-28 13:58:06 · 5712 阅读 · 0 评论 -
协同过滤推荐ALS PySpark.mllib库
啥是协同过滤?就是用户对所有产品打分,然后根据分数来给用户分组,那同一个组内的用户喜欢的东西应该是相似的。其他的推荐算法例如内容推荐,就是先给产品分类(根据一些乱七八糟的),在将用户分类,然后把新来的产品(网页,东西)分类,在将这个产品推荐给感兴趣这个分类的用户。协同过滤有啥优缺点 优点d 缺点 他不需要对产品(内容)进行分析,因为只要...原创 2019-09-12 18:53:52 · 1165 阅读 · 0 评论 -
Spark ML pipeline学习流程 2元分类
Spark ML使用的数据格式是DataFrame,所以必须使用Dataframe储存处理数据。准备数据option('header'):数据是否由标题 option('delimiter'):分隔符 load: 路径 format:读取格式row_df = sqlContext.read.format('csv')\ .option('header',...原创 2019-09-16 00:23:16 · 514 阅读 · 0 评论 -
Spark RDD, Spark DataFrame, Spark SQL api 的速度测试
groupby 测试在测试了了 筛选(select),join, groupby之后发现RDD:无论什么时候都是最快的Dataframe 和SQL的速度基本上一样原创 2019-09-15 20:21:45 · 868 阅读 · 0 评论 -
SparkSQL 删除不用的tempTable
查看temptablespark.catalog.listTables()[Table(name='user', database=None, description=None, tableType='TEMPORARY', isTemporary=True), Table(name='zipcode_table', database=None, description=None, t...原创 2019-09-15 19:44:51 · 3932 阅读 · 0 评论 -
Spark Dataframe 以及SQL 操作
Spark 主要操作的数据类型是RDD,使用RDD进行数据统计其实就那么几个方法,大多都是通过RDD.map()来解决,但是RDD内部的数据就仅仅是数据,没有结构Schema, 所以每一"列" 就只能通过RDD里的位置就判断。 通过 spark 提供的 Datafram API 可以提供table格式的数据,方便进行数据分析。更重要的是 Spark更先进的库 pyspark.ML(我用pysp...原创 2019-09-15 05:13:41 · 1838 阅读 · 0 评论 -
协同过滤pyspark.mllib.ALS算法代码(一个例子)
原理在上一个帖子里https://blog.youkuaiyun.com/a8131357leo/article/details/100625257训练模型from pyspark.mllib.recommendation import ALSfrom pyspark.conf import SparkConffrom pyspark.context import SparkContext...原创 2019-09-13 01:23:37 · 2041 阅读 · 0 评论 -
Spark 程序在Yarn上的内存问题,简单解释
当上传spark程序时,总会有出现以下这个错误Spark-submit报错 Container exited with a non-zero exit code 143还有比如 outOfmemory, memory exceed 等等,一个头两个大。。。。对于只是使用spark程序的人,我实在是没兴趣了解spark 内存管理(我也不干这个。。。)所以只有一个目的,如何...原创 2019-09-13 00:09:21 · 657 阅读 · 0 评论 -
Spark-submit:System memory 466092032 must be at least 471859200
系统内存不足https://blog.youkuaiyun.com/chy2z/article/details/87126349转载 2019-09-12 23:20:08 · 321 阅读 · 0 评论 -
PySpark初始化,生成RDD
Table of ContentsSpark程序执行过程Spark程序初始化RDD创建RDD1. parallelize()集合 list或者array2 textFileSpark程序执行过程每个spark 应用(application)包含一个驱动(driver)程序,这个驱动程序运行用户的主函数,并在集群中执行并行化操作。驱动其实就是你的老大,你...原创 2019-02-28 13:19:47 · 2445 阅读 · 1 评论