1.pyspark生成parquet
注意!!如果你的几个需求之间,生成表的schema不一致,不要用同一个名称生成parquet,会导致失败,并且没有报错信息
即是:parquet不要重名!除非schema一致!
2.使用pandas生成csv
数据量较大的时候,比较长的字符串(内容是数字)就会变成科学计数法
解决方法:
1做一个后缀加“”字符再生成csv
2不用pandas,直接使用pyspark的dataframe.write.csv(xxx.csv,header=True) 生成在HDFS上
3.代码计算相关
1.spark的dataframe都是在执行action的时候进行计算; 所以如果循环中引用了一个计算较为复杂的DF,建议先将此DF落地
2. 使用window 去计算Max Min, 使用MAX(STRUCT(event_time,other_tags)) 会比较快
3. 如果JOIN的2边涉及到必须保留的空值,建议改成空字符串; 因为2个空值JOIN是会损失所有结果
4. 使用from_unixtime(timestamp,‘yyyyMMdd’)的时候注意机器时间, 该方法转化的时间和机器时间一致
5. 如果crontab 定时任务, 时间的时区也和机器一致
6. spark-submit 在本机断电的情况下可能会导致提交的任务就此停住: 使用nohup spark-submit XX.py > XX.log 2>&1 &可以在XX.log里面记录执行log; 且不会断电