Pyspark筆記一


1. pyspark讀csv文件后無法顯示中文

#pyspark讀取csv格式時,不能顯示中文
df = spark.read.csv(r"hdfs://mymaster:8020/user/root/data_spark.csv", schema=schema)

#解決方法,加入encoding='gbk',即
df = spark.read.csv(r"hdfs://mymaster:8020/user/root/data_spark.csv", schema=schema, encoding='gbk')

2. 查看和修改默認編碼格式

import sys
#查看默認編碼格式
print(sys.getdefaultencoding())

#修改編碼格式
sys.setdefaultencoding('utf8')

#參考:https://blog.csdn.net/abc_321a/article/details/81945577

3. pyspark導入spark

原因:python中沒有默認的sparksession,需要導入

#方法
from pyspark import SparkContext
from pyspark.sql.session import SparkSession

sc = SparkContext('local', 'test')
spark = SparkSession(sc)
#之后即可以使用spark
#參考:https://blog.csdn.net/zt7524/article/details/98173650

4. Pyspark引入col函數出錯,ImportError: cannot import name 'Col' from 'pyspark.sql.functions'

#有人建議的是,不過我用的時候會報錯
from pyspark.sql.functions import col

#后來測試了一種方式可以用
from pyspark.sql import Row, column

#也試過另一個參考,不過要更新pyspark包之類的,於是暫時沒有用該方法,也就是安裝pyspark-stubs包:pip install pyspark-stubs
#參考:http://isunix.github.io/blog/2019/06/04/pysparkzhong-yin-ru-colhan-shu-de-fang-shi/
#參考:https://stackoverflow.com/questions/40163106/cannot-find-col-function-in-pyspark
#參考:https://pypi.org/project/pyspark-stubs/

 5. Exception: Python in worker has different version 2.6 than that in driver 3.7, PySpark cannot run with different minor versions.

#我是在Red hat環境下,裝了兩個python版本,於是報錯
# 解決方案:在環境中加入想用的python版本
import os
os.environ["PYSPARK_PYTHON"]="/usr/bin/python3"
#參考:https://blog.csdn.net/wmh13262227870/article/details/77992608

6. 在Red hat上使用pip3 安裝pandas的時候出錯:pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. 

原因:python 3.7版本會出現這個問題,是因為openssl的版本比較低

方法:必須先升級openssl,然后重新編譯或者安裝python,順序要注意

升級openssl和編譯python可參考:https://www.cnblogs.com/jasonLiu2018/articles/10730605.html

注意:./configure --prefix=/usr/local/python3 --with-openssl=/usr/local/openssl 是先cd到python解壓后的目錄,再使用的,例如解壓目錄是當前目錄的:Python-3.7.0,則先在命令行執行 cd Python-3.7.0,進入該目錄,執行上述./configure代碼,/usr/local/python3是python將要安裝的目錄,/usr/local/openssl是openssl已安裝的目錄;然后直接依次:make, make install重裝python。

升級openssl可參考:

https://www.cnblogs.com/caibao666/p/9698842.html

https://www.cnblogs.com/mqxs/p/9103031.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM