python判断hive是不是分区表

python判断hive是不是分区表,第1张

show create table 表名;

如果是这个表有分区的话,可以看到显示的内容里有partition,partition里面跟的就是分区列名

python执行该命令即可

#已知文件名的情况下,可以用这个函数

def getFileInfo(filepath):

info = {}

if ospathisfile(filepath):

info['TimeCreated'] = ospathgetctime(filepath)

info['TimeModified'] = ospathgetatime(filepath)

info['Size'] = ospathgetsize(filepath)

return info

站内有朋友私信数据产品经理都需要掌握哪些技能和工具,我给他们的回答:1数据提取得会:hive 2数据清洗和整理:hive+Excel+Python 3数据统计分析:Excel+SPSS+Python 4数据展示:Excel+PPT+tableau

本文开启hive的基础教程和进阶(长更,有需要的朋友收藏便于阅读)

20181006 建表

11创建分区表 注意:set语句中不能有注释

set hiveexecdynamicpartitionmode=nonstrict; --动态分区

set hiveexecdynamicpartition=true;  --动态分区(partition的字段是动态查询写入的)

set hiveexecmaxdynamicpartitions=100000; --总共的最大的动态分区数

set hiveexecmaxdynamicpartitionspernode=100000;--每个节点上能够生成的最大分区,这个在最坏情况下应该是跟最大分区一样的值

set hiveexecmaxcreatedfiles=500000;  --是能够创建的最多文件数(分区一多,文件必然就多了)

CREATE EXTERNAL TABLE IF NOT EXISTS data_zhp( --如果相同名字的表已经存在,则抛出异常;用户可以用 IF NOT EXIST 选项来忽略这个异常

ROWKEY STRING,

STATION INT,

MONTH INT,

DAY INT

HOUR INT ,

MINUTE INT,

)

COMMENT 'ECLP开放预测'

PARTITIONED BY (YEAR INT)

ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' --声明文件分隔符

LINES TERMINATED BY '\n' --声明各条记录分隔符

STORED AS TEXTFILE;

--Hive数据文件的存储格式,这里使用的是TEXTFILE,还有SEQUENCEFILE和RCFile,一共三种。

--TEXTFILE是最普通的文件存储格式,内容是可以直接查看。

--SEQUCENFILE是包含键值对的二进制的文件存储格式,支持压缩,可以节省存储空间。是hadoop领域的标准文件格式,但是在hadoop之外却无法使用。

--RCFile是列式存储文件格式,适合压缩处理。对于有成百上千字段的表而言,RCFile更加合适。

12复制空表与复制表及数据

CREATE TABLE sku_id_copy LIKE sku_id;

CREATE TABLE sku_id_copy as

select

from sku_id;

20181014 表基础 *** 作增删改

13表的增删改

增加一列

ALTER TABLE dev_linshibiao  ADD   COLUMNS (new_col string)

删除dept_id_1\ model列

ALTER TABLE dev_linshibiao  REPLACE COLUMNS (op_time string, dept_name_1string, cw_gmv double)

增加分区

ALTER TABLE dev_linshibiao  ADD   PARTITION (dt=‘2016-06-20’)

删除分区

ALTER TABLE dev_linshibiao  DROP PARTITION (dt=‘2016-06-20’)

删除表

DROP TABLE dev_linshibiao

创建/删除视图

CREATE VIEW [IF NOT EXISTS] view_name [ (column_name [COMMENT column_comment], ) ][COMMENT view_comment][TBLPROPERTIES (property_name = property_value, )] AS SELECT

如果没有提供表名,视图列的名字将由定义的SELECT表达式自动生成;如果修改基本表的属性,视图中不会体现,无效查询将会失败;视图是只读的,不能用LOAD/INSERT/ALTER

DROP VIEW view_name  删除视图

20181114 表的数据插入

14表的插入数据

分区表用overwrite:插入前清空分区

insert overwrite TABLE devsearch_batch_pvuv_zwh partition (dt)

    SELECT      FROM XXXXX

不分区的表必须用insert  into

insert  into不清空插入,overwrite插入前清空,表中最后只剩新插入的数据

15表加载数据

LOAD DATA LOCAL INPATH '/files/XXXtxt' OVERWRITE INTO TABLE XXXX;

--------------我是可爱的分割线,下期预告:查表----------------

没有比人更高的山,比脚更长的路~

20181128  基本的 Select语法

21基础查询

SELECT [ALL | DISTINCT] column1, column2,

FROM table_XXXX

[ WHERE where_aaaa=XXX]

[ GROUP BY column1 [HAVING condition]]

[ CLUSTER BY column1| [ DISTRIBUTE BY column1] [ SORT BY | ORDER BY column1]]

[ LIMIT number]

1使用ALL和DISTINCT选项区分对重复记录的处理,默认是ALL,表示查询所有记录;DISTINCT表示去掉重复的记录

2Where 条件,支持 AND,OR ,between,IN, NOT IN,不支持EXIST ,NOT EXIST

3ORDER BY与SORT BY的不同,ORDER BY 全局排序,只有一个Reduce任务;SORT BY 只在本机做排序,前者保证在全局进行排序,而后者仅保证在每个reduce内排序,如果有超过1个reduce,sort by可能有部分结果有序

CLUSTER BY 和DISTRIBUTE BY主要用在进行Transform/Map-Reduce脚本。

4Limit 可以限制查询的记录数,实现Top n查询,一般order by 必须携带limit使用

22hive的分区查询

hive表的一个优势便是分区,通过分区可以避免扫全表数据,从而提高数据查询速度,分区限制在where语句中使用

--------------我是可爱的分割线,下期预告:表关联----------------

人的一生,总是为了追寻生命中的光,而走在漫长的旅途中~

在表设计的过程,考虑表的冗余程度、速度等原因,更多的是面向对象或者面向主题设计,所以需要全面的数据支持,便需要多表关联查询完成。

表的关联的两个手段为JOIN和UNION ALL

31 join

常用的join,left outer join ,right outer join , full join ,left semi join

311 join

Select  a  from  tableA  a  join  tableB b  on aid=bid

必须等值链接,结果展示a、b表中共有的id部分

312 left outer join ,right outer join 

Select  a  from  tableA  a  left outer join  tableB b  on  aid=bid

313 full join

Select  a  from  tableA  a  full join  tableB b  on aid=bid

314 left semi join

Select  a  from  tableA  a  left semi join  tableB b  on aid=bid

等同于join,但是结果只显示a表中字段

join的注意事项:

1实践中,应该把数据量最大的那个表写在最后关联;

2限制 join 的输出,应该在 join前WHERE 子句中写过滤条件,或是在 join 后子句中写

3可以 join 多于 2 个表

4join容易将数据重复记录,导致计算最后结果错误

32 UNION ALL

相同字段的表直接2表合并

SELECT column_name(s)

FROM table_name1 UNION ALL SELECT column_name(s) FROM table_name2

大数据测试,说来进入这块领域也快2年半了。每天工作的内容是验证数据表的逻辑正确性。

最近偶有所思,数据测试能否更进一步?如何利用已有技能对海量数据进行全面分析,找出数据质量问题或协助数据分析师发现逻辑漏洞?

再或者,能否向数据分析师转型呢?想得很多,思绪有些杂乱。于是我冷静了下,不再空想。我先做点东西出来看看,再评估下自己是否有这个能力和资质。

花了1个星期的时间,学习了 Python 的 Pandas 模块,按照学习示例一边学习一边实 *** ,慢慢地感觉就来了。对 Pandas 有了基本的认知后,我在寻找一个突破点,我想我不能一直只是这样按照示例代码敲下去,毫无意义。

我得将所学的 Pandas 知识结合公司现有的业务进行运用。刚开始至少能简单地开始对某张数据表的某个指标进行数据分析。于是我按照这样的想法对 test test_resv001_room_daily_df 表的 number_of_room_nights 指标开始了数据分析的 探索 。

1、hivesql数据准备

hivesql内容说明:

从上面的 hivesql 语句可以看出,这条 sql 的目的是查询出 hotel_code_new 为 'CNSZV002','CWH','CWSW','ESL','FIJ' 在2019年各个月份的 number_of_room_nights 指标总和,按照 hotel_code_new 和月份作分组和排序。

2、代码实现

3、hive数据库all_data的数据结构查询结果

4、代码实现2中的print(df)输出结果

手工校对通过,与 hivesql 输出结果一致。

5、将dataframe数据结构的df数据使用plot生成趋势图

调用dfplot()不带任何参数的趋势图如下:

上述折线图表示:当前月份值及 历史 月份值的累加和。

调用dfplot(kind='bar')时加上参数kind='bar'的趋势图如下:

上述柱状图表示:当前月份值及 历史 月份值的累加和。

两个图只是展示形式上的区别,都能在一定程度上体现2019年12个月份每个不同 hotel_code_new 当前月份与 历史 月份 number_of_room_nights 值的累加和的数据分布情况,可以说是一个简单的数据分析。

6、将dataframe数据写入csv文件

room_ntscsv内容如下:

7、读取csv文件中dataframe数据

8、将dataframe多维数据存储到excel中

room_ntsxlsx文件中sheet_name为room_nts的内容如下:

9、从excel中读取dataframe多维数据

小结

今天分享的数据分析内容比较基础,主要是将学到的技能与业务相结合的初步 探索 ,后续还需要不断 探索 与学习,将学习到的技能加以思考并运用到实际项目业务中,如此方能走得更远。

以上就是关于python判断hive是不是分区表全部的内容,包括:python判断hive是不是分区表、python如何获取windows文件属性的详细信息、Hive教程 | 从0到1等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9591010.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存