# -*- coding:utf-8 -*-
from pyspark import sparkconf
from pyspark import sparkcontext
import os
if __name__ == '__main__':
sc = sparkcontext(conf=conf)
'''/log/shuangshi_haibian/2018-07-16-19-58-log.1531792035400.tmp'''
"hdfs://localhost:9002/tmp/match/2018-07-16-19-58-log.1531788952521"
'''需要:實時處理資料時,如果讀取到tmp檔案,但是實際處理的時候變成不是tmp檔案,這樣會導致程式報錯,
在這裡,我們就是要只匹配那些以數字為結尾的hdfs檔案作為spark的輸入,不把以tmp的臨時檔案作為輸入
# hdfs目錄
-rw-r--r-- 1 a6 supergroup 31672 2018-07-17 10:59 /tmp/match/2018-07-16-19-58-log.1531792131825
-rw-r--r-- 1 a6 supergroup 30182 2018-07-17 10:59 /tmp/match/2018-07-16-19-58-log.1531792160280
-rw-r--r-- 1 a6 supergroup 27956 2018-07-17 10:59 /tmp/match/2018-07-16-19-58-log.1531792347369.tmp
''''''
input_data="hdfs://localhost:9002/tmp/match/%s-19-58-log.1531788952521" % ('2018-07-16')
print input_data
input_data = "hdfs://localhost:9002/tmp/match/%s-19-58-log.153178895252[1-9]" % ('2018-07-16')
print input_data
''''''
經過查詢,在匹配路徑時,使用[0-9]做匹配,能夠獲取所有最後一位以數字為結尾的那些hdfs檔案作為輸入,而不是tmp檔案,滿足需求'''
input_data = "hdfs://localhost:9002/tmp/match_bak/%s*[0-9]" % ('2018-07-16')
print input_data
result = sc.textfile(input_data)
res_rdd= result.collect()
for line in res_rdd:
print line
讀取檔案,檔案以數字結尾. spark 讀取 hdfs 資料分割槽規則
下文以讀取 parquet 檔案 parquet hive table 為例 hive metastore 和 parquet 轉化的方式通過 spark.sql.hive.convertmetastoreparquet 控制,預設為 true。如果設定為 true 會使用 org.apache.s...
spark 讀取 hdfs 資料分割槽規則
下文以讀取 parquet 檔案 parquet hive table 為例 hive metastore 和 parquet 轉化的方式通過 spark.sql.hive.convertmetastoreparquet 控制,預設為 true。如果設定為 true 會使用 org.apache.s...
Spark讀取檔案
spark預設讀取的是hdfs上的檔案。如果讀取本地檔案,則需要加file usr local spark readme.md。測試時候發現,本地檔案必須在spark的安裝路徑內部或者平行 讀取hdfs檔案,可以這樣指定路徑 hdfs ns1 tmp test.txt。如果不指定任何字首,則使用hd...