spark讀取hdfs檔案的路徑使用正規表示式

2021-08-21 12:29:49 字數 1432 閱讀 8628

# -*- 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...