2019独角兽企业重金招聘Python工程师标准>>>

spark sql

# -*- coding: UTF-8 -*-from pyspark import SparkConf, SparkContext, StorageLevel
from pyspark.sql import Row, SQLContext
from py4j.protocol import Py4JJavaError
from collections import OrderedDict
import jsonconf = SparkConf().setAppName('SimpleApp').setMaster('local[*]')
sc = SparkContext(conf=conf)
sql_context = SQLContext(sc)  # Not to mention you need a SQLContext to work with DataFrames anyway.def try_text_file(path):# handle existing-empty-file and non-existent-filerdd = sc.textFile(path)try:rdd.first()return rddexcept Py4JJavaError:return sc.emptyRDD()s3_urls = ['172.31.19.1/QAClick-2887717633-20011-2017012800.tar.gz','172.31.0.142/QAClick-2887712910-20010-2016101203.tar.gz']
paths = ['s3a://aff.parallel-app.com/{url}'.format(url=url) for url in s3_urls]
rdd_file = sc.union([try_text_file(path) for path in paths])# s_urls = ','.join(['s3a://aff.parallel-app.com/{url}'.format(url=url) for url in tmp_urls])
# rdd_file = sc.textFile(s_urls, 2)def convert_line_to_row(line):line = line.strip()idx = line.find(' {')if idx != -1:try:d = json.loads(line[idx:])except:d = {}else:d = {}if d:ymdhms = line[:14]else:ymdhms = ''ymd = ymdhms[:8]hms = ymdhms[8:14]pkg_name = d.get('ad_pkg_name', '')perform_install = d.get('perform_install', False)if perform_install:perform_install = 1else:perform_install = 0tmp_dict = {'pkg_name': pkg_name, 'perform_install': perform_install, 'ymd': ymd, 'hms': hms}return Row(**OrderedDict(sorted(tmp_dict.items())))df = rdd_file.map(convert_line_to_row).toDF()
# df.persist(StorageLevel.MEMORY_AND_DISK)  # MEMORY_ONLY,MEMORY_AND_DISK,DISK_ONLY
# print rdd_file.take(2)df.registerTempTable("tbl_qac")
sql = """
select ymd,pkg_name,count(*)
from tbl_qac where pkg_name!='' and perform_install=1
group by ymd,pkg_name
"""
sc_sql = sql_context.sql(sql)
sc_sql.show()
print sc_sql.collect()

转载于:https://my.oschina.net/1123581321/blog/877003

spark访问不存在文件,或者空文件相关推荐

  1. ftp下载的文件为空文件

    今天遇到一个奇怪的问题在使用ftp下载的时候出现下载了一个空文件为0kb 其实这是也是下载失败的情况,很有可能是因为new Ftp的时候没有指定工作目录 或者在下载之前没有使用ftp.changeWo ...

  2. bat命令删除指定文件夹下的文件以及空文件夹

    1.删除指定目录下的文件(指定天数之前的30,30为天数,30天之前的文件) @echo off forfiles /p "D:\new\1027\release\image" / ...

  3. 基因数据处理104之SparkBWAMaster文件得到空文件,中间sam文件找不到

    脚本1: spark-submit --class SparkBWA \ --master spark://219.219.220.149:7077 \ --conf "spark.exec ...

  4. PHP获取文件夹内所有文件包括子目录文件的名称或路径

    /* * new getFile($_dir[,$_emptyDir,$_fileType]); * @parma $_dir 是目录名称 * @parma $_emptyDir 是否获取空文件夹,选 ...

  5. cmd处理文件夹和文件的命令

    cmd处理文件夹和文件的命令 功能 命令 查看当前目录下的所有文件夹和文件 dir 进入文件夹 cd 文件夹名 创建文件夹 md 文件夹名 创建文件 创建空文件: type nul>文件名 创建 ...

  6. hosts文件为空,仍然显示ERR_CONNECTION_RESET的解决方法(hosts.ics)

    hosts文件为空,仍然显示ERR_CONNECTION_RESET的解决方法(hosts.ics) 最近在学习 Java 的时候,未免要使用到 idea 这一神器,但是不知道为什么,登录 idea ...

  7. Python操作FTP服务器实现文件和文件夹的上传与下载,python清理ftp目录下的所有文件和非空文件夹

    Python 连接 FTP 服务器并实现文件夹上传实例演示 第一章:连接 FTP 服务器并实现文件夹上传 ① 连接 FTP 服务器 ② 区分文件和文件夹名 ③ 文件夹名包含空格处理 ④ 使用递归实现: ...

  8. 电脑端如何访问手机SD卡中的文件

    看到标题,估计各位看官有点懵,访问SD卡中的文件,你连上数据线不就行了,或者说你想要获取一些数据,你用及时通讯(微信,钉钉,QQ等等),在线传输不就行了,这些都可以的啊,有什么难的吗?哎,各位小老弟, ...

  9. linux mv 非空文件夹,Linux基本命令——cp、mv、rm、tree、mkdir、rmdir

    cp:复制文件和目录 语法: cp [OPTION]... [-T] SOURCE DEST cp [OPTION]... SOURCE... DIRECTORY cp [OPTION]... -t ...

  10. linux桌面卷积文件删除不掉,Linux 删除文件夹和文件的命令(强制删除包括非空文件)...

    linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm -rf命令即可. 直接rm就可以了,不过要加两个参数-rf 即:rm -rf 目录名字 -r ...

最新文章

  1. websocket心跳链接代码_WebSocket原理与实践(五)--心跳及重连机制
  2. 深度丨Google告诉你为什么各大机构都在争相研究AI芯片
  3. 程序员必备!CSDN 公众号新功能上线!现在体验有惊喜!
  4. Zend Framework中,执行自定义sql语句
  5. matlab练习程序(简单图像融合)
  6. f2812的c语言与标准c语言,关于F2812中用C语言来实现中断的说明
  7. 如何导出maven子项目_如何使用maven 轻松重构项目
  8. 提高ipad浏览器下大尺寸xml文件解析的性能
  9. 全国计算机等级考试 备考,全国计算机等级考试经验:如何调整备考心态
  10. XV6操作系统代码阅读心得(二):进程
  11. TRUNCATE和DELETE有以下几点区别
  12. 图论算法 —— 图论概述
  13. 58 SD配置-科目分配-定义科目代码
  14. 【数据结构----笔记5】插入排序算法之【希尔排序算法】
  15. 韩山师范计算机应用技术,二、计算机应用与技术系学生在韩山师范学院“挑战杯”的-….pdf...
  16. 听我讲完 redo log、binlog 原理,面试官老脸一红!
  17. 如何验证远程服务器上文件是否存在
  18. html+css仿写小米商城
  19. 【qingcloud】k8s iptable -F/L
  20. 北纬三十度“神命谷”旅游策划方案

热门文章

  1. MVVM开发模式MVVM Light Toolkit
  2. C#读写SQLSERVER中Image类型图片
  3. jmeter与jdk的安装
  4. idea添加自动编译
  5. Spring Security 3多用户登录实现之二 多登录界面展示
  6. [No00005A]word多文档合一
  7. GDI和GUI的区别
  8. 编程语言-Ruby-问题整理
  9. js+面向对象相关笔记(一)
  10. SQL Server 数据库所有表增加同一列