大数据-玩转数据-Spark-Structured Streaming 数据源(python版)
1、File 数据源
支持文件格式有 .csv、.json 、.orc、.parquet、 .txt 等
写一个Python 程序,生成模拟数据模拟电子商城的用户登录行为
[root@hadoop1 temp]# vi sparkexampledata.py
#模拟电子商城的用户登录行为
#!/usr/bin/env python3
#-*-coding: utf8-*-
import random
import os
import shutil
import time
DATA_TEMP_DIR='/home/hadoop/temp/filesourcedata'
DATA_DIR='/home/hadoop/temp/filesourcedata/testdata'
ACTION_DEF=['login','logout','purchase']#三种用户行为
DISTRICT_DEF = ['fujian','beijing','shanghai','guangzhou']
JSON_LINE_PATTREN = '{
{"eventTime":{},"action":"{}","district":"{}"}}\n'#统一模式
#测试文件夹是否存在,如果有就清空掉重新创建
def test_setUp():
if os.path.exists(DATA_DIR):
shutil.rmtree(DATA_DIR,ignore_errors=True)
#递归删除文件夹下的所有子文件夹和子文件
os.mkdir(DATA_DIR)
#测试环境的恢复,对文件夹进行清洗,结束时用它把文件都删了
def test_tearDown():
if os.path.exists(DATA_DIR):
shutil.rmtree(DATA_DIR,ignore_errors = True)
#生成测试文件
def write_and_move(filename,data):
with open(DATA_TEMP_DIR+filename,"wt",encoding="utf-8") as f:
f.write(data)
shutil.move(DATA_TEMP_DIR+filename,DATA_DIR+filename)
if __name__=="__main__":
test_setUp()
#生成1000个文件每个文件里是100行jason数据
for i in range(1000