大数据
文章平均质量分 50
工作小经验
SLUMBER_PARTY_
这个作者很懒,什么都没留下…
展开
-
pyspark读取数据库性能优化
dbtable和query配置不能同时存在,选一种即可。里面都可以直接写sql语句如果dbtable是一个表,如果load()后进行where和select,都会把整张表加载进来,耗内存。直接写sql语句比较好。原创 2023-12-03 19:33:15 · 501 阅读 · 0 评论 -
pyspark读取mongo格式混乱,读取列缺失问题解决
问题2:mongo里的数据可能有点脏,某列A可能既有long int格式,又有string格式。如果pyspark自动推断schema,可能识别成string格式,然后它遇到了少量的long int格式,就报错了,说string格式无法转换为long int。pyspark读取mongo的schema是自动推断的,随机筛选1000行推断schema,如果这一千行都没有某列,那么这列就缺失了。然而实际操作,发现定义了2列的模式,那么结果就只有2列。解决办法是,自己定义schema,而不是自动推断。原创 2023-07-20 12:16:57 · 266 阅读 · 0 评论 -
sparksql中json处理
get_json_object, to_json使用原创 2022-10-12 11:28:31 · 1163 阅读 · 0 评论 -
sparksql date类型操作,date和字符串互相转换
sparksql date类型使用,date类型和字符串相互转换原创 2022-08-16 13:09:14 · 5756 阅读 · 0 评论 -
pyspark join用法总结
文章目录DSL(Domain-Specific Language)形式inner, full, left, right, left semi, left anti, self join多表join关联条件多个的joinsql形式参考文献DSL(Domain-Specific Language)形式join(self, other, on=None, how=None)join() operation takes parameters as below and returns DataFrame.原创 2022-04-09 21:04:35 · 5043 阅读 · 0 评论 -
pyspark读写mongo的技巧和坑
技巧每次把数据写入mongo,mongo都会自动创建_id字段,mongo中_id字段是唯一的,mongo会为这个字段自动建立索引。写mongo之前可以指定_id的值,这样当你的写入mode是Append的时候,你的记录写入mongo,如果不存在该_id,那么就添加改记录,如果存在该_id,那就覆盖原来_id对应记录的值。这样,比如你要往mongo里加4条记录,在你调试你的代码的时候,可以写这4条记录无数次,反正每次这4条记录都会被覆盖。假设user表里有字段ID(唯一),name,income,要原创 2022-03-26 11:43:44 · 3331 阅读 · 0 评论 -
pyspark读写mongo数据库
读写mongo方式一from pyspark.sql import SparkSessionmy_spark = SparkSession \ .builder \ .appName("myApp") \ .config("spark.mongodb.input.uri", "mongodb://127.0.0.1/test.coll") \ .config("spark.mongodb.output.uri", "mongodb://127.0.0.1/test.co原创 2022-03-26 11:32:03 · 3279 阅读 · 0 评论 -
pyspark读取mysql和oracle
读写数据库一开始我使用的是方式三,后来感觉代码太长满足不了我强迫症的需求,现在有了方式一,勉强行吧。mysql和oracle写法的格式一样。数据库配置user,password,driver='xxx','yyy','zzz'url = 'jdbc:mysql://host:port/database'prop = {'user': user, 'password': password,'driver': driver}方式1最短的写法,我比较喜欢,尤其是读数据库次数较多的时候data =原创 2022-03-26 11:17:31 · 1264 阅读 · 0 评论 -
pyspark-UnicodeEncodeError: ‘ascii‘ codec can‘t encode characters...
公司的测试环境无法打印中文,根据报错信息找了好多解决方案都没成功。历尽千辛万苦,终于有一个能成功了。import sysimport codecs sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())print("中文")原文链接python3报错处理:UnicodeEncodeError: ‘ascii‘ codec can‘t encode characters in position 0-1...原创 2021-12-28 20:22:13 · 1014 阅读 · 0 评论 -
pyspark-用户自定义函数udf
在PySpark中,你用python语法建立一个函数,然后用PySpark SQL中的udf()方法在dataframe中使用,或将其注册成udf并在sql中使用。例1 通过select()使用UDFfrom pyspark.sql.functions import col, udffrom pyspark.sql.types import StringTypedef convertCase(str): resStr="" arr = str.split(" ") for原创 2021-12-28 20:12:33 · 2308 阅读 · 0 评论 -
nohup输出日志文件
1 前言1 代表stdout 标准输出2 代表stderr 标准错误1.1 标准输出1.1.1 标准输出,日志文件覆盖command > output.txtcommand 1> output.txt以上两句等价。将命令的stdout重定向至文件,stdout将不会出现在终端。如果文件已经存在,将会覆盖。1.1.1 标准输出,日志文件追加command >> output.txtcommand 1>> output.txt以上两句等价。将命令原创 2021-12-16 22:04:47 · 9218 阅读 · 0 评论 -
python, pyspark导入自定义包
假设我自定义包的目录在D:\dir1\dir2\里, 里面有parent包,包括p1.py, p2.py, 两个文件分别由p11和p22两个方法import sys# 将包含parent包的路径添加进系统路径sys.path.append(r"D:\dir1\dir2")import parent.p1 as p1import parent.p2 as p2p1.p11()p2.p22()或者直接将parent这个包放在当前目录下,那么可以直接写import parent.p1 as p原创 2021-12-15 22:21:06 · 3850 阅读 · 0 评论 -
pyspark根据正则表达式选择列
python正则表达式见python正则表达式入门pyspark.sql.DataFrame.colRegex方法可以根据正则表达式选择列。例1:选择所有BASE_开头的列df.select(df.colRegex("`(BASE_)+.+`")).show()()表示组,’+‘表示前面的表达式出现一次或以上,’.‘代表任意一个字符。(BASE_)代表组,第一个’+‘代表前面的BASE出现一次或以上,’.‘代表任意单个字符,第二个’+'代表前面的任意字符出现一次或以上。整行代码的意思为列名必须为原创 2021-12-14 19:50:20 · 1766 阅读 · 0 评论 -
pyspark写入elasticsearch及注意点
1 dataframe写入es'''es_url: ip地址es_port:端口es_user:用户名es_pass:密码'''spark=SparkSession.builder\ .config("spark.es.nodes",es_url)\ .config("spark.es.port",es_port)\ .config("es.net.http.auth.user",es_user)\ .config("es.net.http.auth.pass",es原创 2021-12-12 21:32:16 · 2072 阅读 · 0 评论 -
pyspark数据类型转换-withColumn,select,selectExpr,sql四种方式
pyspark中数据类型转换共有4种方式:withColumn, select, selectExpr,sql介绍以上方法前,我们要知道dataframe中共有哪些数据类型。每一个类型必须是DataType类的子类,包括ArrayType, BinaryType, BooleanType, CalendarIntervalType, DateType, HiveStringType, MapType, NullType, NumericType, ObjectType, StringType, Stru原创 2021-12-08 22:30:21 · 9490 阅读 · 0 评论 -
shell下文件UTF-8格式转换为gbk
shell下文件UTF-8格式转换为gbk的语法为iconv -c -f utf8 -t fileName1.csv > fileName2.csv-c代表从输出中忽略无效的字符。要注意,没有-c如果文件中有非gbk编码,文件转换会在非gbk字符处截断,后面的文件内容会直接没有(工作中一开始不知道被坑了好几次…)。文件异常截断时有如下类似报错信息。iconv:未知31063处的非法输入序列...原创 2021-12-06 20:48:47 · 2189 阅读 · 0 评论 -
用通配符指定文件名集-glob
在计算机编程中,glob 模式用通配符指定文件名集。我正在使用pyspark,我想用一种表达方式来读取文件名集合。假设目录/dir1/dir2/下有2020年和2021年全部的数据,每天的数据放在该天目录下,即2021年7月1日的数据放在20210701目录下,如果我想读取2021年全部的文件,只需以下代码spark.read.load("/dir1/dir2/2021*")但如果我只想读取2月份和3月份的所有数据呢?开始我的思路是用正则表达式表示,但python中我对正则表达式一窍不通,然后我去原创 2021-12-05 23:15:42 · 345 阅读 · 0 评论 -
spark优化之编程方式汇总
spark优化有两个方向,一是写好的代码,二是合理配置资源。本文讲述的是第一种思路,内容来源于Spark Performance Tuning & Best Practices,sparkbyexample是个很好的网站,除了是全英文,没有缺点。以下为整理的spark程序优化思路:使用DataFrame而不是RDD。这得益于钨丝计划项目和catalyst优化器的优化。钨丝计划能提高spark任务的内存和cpu效率,catalyst优化器是个整合的sql查询优化器。使用coalesce(原创 2021-11-11 21:11:29 · 1457 阅读 · 0 评论 -
spark的cache(),persist(),unpersist()方法及需要注意的细节
1 cache(), persist()和unpersist()原文链接:Spark DataFrame Cache and Persist Explainedspark中DataFrame或Dataset里的cache()方法默认存储等级为MEMORY_AND_DISK,这跟RDD.cache()的存储等级MEMORY_ONLY是不一样的。理由是重新计算内存中的表的代价是昂贵的。MEMORY_AND_DISK表示如果内存中缓存不下,就存在磁盘上。spark的dataset类中的cache()方法内部原创 2021-11-11 20:55:44 · 10237 阅读 · 0 评论 -
sparksql优化之join
文章目录前言1 概念:流式遍历表(streamIter)和查找表(buildIter)2 概念:sparksql种3种join的实现方式3 4种join方式参考文献前言本文是以下两篇文章的总结。Spark SQL join的三种实现方式 - 多读书多看报 - 博客园 (cnblogs.com)Spark SQL 之 Join 实现 - 云+社区 - 腾讯云 (tencent.com)1 概念:流式遍历表(streamIter)和查找表(buildIter)流式遍历表(streamIter)和查原创 2021-11-07 15:51:32 · 2029 阅读 · 2 评论 -
excel里vlookup函数使用
名不见经传大数据工程师工作经验领导给甲和乙同样的任务。甲给出3列,客户证件号,消费金额,消费日期,4行数据,乙给出同样的3列,5行数据。甲和乙给出的数据顺序都是随机的。领导想知道甲和已给出的数据有什么区别。上图,左边3列是甲的数据,右边3列是乙的数据,第i列是从E列中匹配的甲的同样证件号的乙的消费金额看甲乙两人的数据是否一致。得到以上效果只需在I2单元格输入=VLOOKUP(E3,$A$2:$C$5,2,0)vlookup(查找值,查找范围,留下第几列,FALSE)#FALSE是精确匹配,0=原创 2021-11-03 21:37:53 · 696 阅读 · 0 评论