概述
spark读取hdfs文件的路径使用正则表达式
例子一、
# -*- coding:utf-8 -*-
from pyspark import SparkConf
from pyspark import SparkContext
import os
if __name__ == '__main__':
os.environ["SPARK_HOME"] = "/Users/a6/Applications/spark-2.1.0-bin-hadoop2.6"
conf = SparkConf().setMaster('local').setAppName('group')
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.read.json("/flume/product/160/raw1/2017/05/23/*[1-9]")
读取文件,文件以数字结尾.
最后
以上就是能干仙人掌为你收集整理的spark读取hdfs文件的路径使用正则表达式的全部内容,希望文章能够帮你解决spark读取hdfs文件的路径使用正则表达式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复