文件import問題
問題: 在腳本中import了其他文件, pyspark中可以運行, 但是在spark-submit中總是失敗
假定我們的任務(wù)腳本為 app.py , 大體代碼像這樣:
from pyspark import SparkContext ## 加載通用腳本 import common # # ......... # if __name__ == "__main__": sc = SparkContext(appName="ACoolApp") # # run #
公用函數(shù)的放到了 common.py 文件中. 通過 --py-files 可以在pyspark中可以順利導(dǎo)入:
# success pyspark --py-files lib/common.py > import common
而使用spark-submit來提交 app.py 2881064151總是失敗
# import error spark-submit --py-files lib/common.py app.py
找了好久的解決辦法, 最后參考了 這里 . 簡單來說, 所有的import操作必須在context完成之后. pyspark之所以不報錯就是因為context已經(jīng)初始化好了. 所以我們簡單改下 app.py 中import的位置就可以了:
if __name__ == "__main__": sc = SparkContext(appName="ACoolApp") import common
數(shù)據(jù)保存至mysql中
問題: 將數(shù)據(jù)寫入mysql
這里不多說, 方法可以直接參考 這里 . 關(guān)鍵點有兩個:
引入mysql的jdbc jar包 設(shè)置好對應(yīng)的的driver, 否則會報 park python java.sql.SQLException: No suitable driver 的錯誤
直接來個代碼片段:
url = 'jdbc:mysql://%s/%s' % (db_host, db_name) properties = { 'user': db_username, 'password': db_password, 'driver': 'com.mysql.jdbc.Driver', } records.write.jdbc(url=url, table=db_table, mode='append', properties=properties)
最后
聯(lián)系客服