hive调用python
⑴ hive中如何调用python函数
ADD FILE /home/taobao/dw_hive/hivelets/smoking/ext/tsa/hivesql/bjx_topic_t1/splitsysin.py.bak;
create table if not exists splittest_t1
(
topic_id string,
topic_title string,
topic_desc string,
biz_date string,
gmt_create string
) PARTITIONED BY(pt string)
row format delimited fields terminated by '\001'
lines terminated by '\n'
STORED AS textfile;
select TRANSFORM(topic_id,topic_title,topic_desc,biz_date,gmt_create)
USING 'splitsysin.py'
as topic_id,topic_title,topic_desc,biz_date,gmt_create
from r_bjx_dim_topic_t1;
⑵ python 连接hive后处理导出excel 问题
你的原始数据里面有空值,因此导致的错误,在写入或者读取之前填充以下缺失值,或者先对要写入或者读取的数据判断下是否为空,再做操作。
要不然你就加入try except,来主动跳过
⑶ CDH Hive 配置HiveServer2
翻译: https://www.cloudera.com/documentation/enterprise/latest/topics/cdh_ig_hiveserver2_configure.html
版本:5.14.2
在使用HiveServer2之前,您必须进行以下配置更改。不这样做可能会导致不可预知的行为。
警告: HiveServer1在CDH 5.3起不推荐使用,并且将在未来的CDH版本中删除。HiveServer1的用户应该尽快升级到 HiveServer2 。
重要提示:这些数字只是一般性指导,可能会受到诸如列数,分区,复杂联接和客户端活动等因素的影响。根据您的预期部署,通过测试进行优化以达到您的环境的最佳值。
有关为HiveServer2配置堆以及Hive Metastore和Hive客户端的信息,请参阅 Hive组件的堆大小和垃圾收集 以及以下视频:
解决HiveServer2服务崩溃问题
当您启动视频,请点击YouTube上在播放器窗口的右下角看它在YouTube上,你可以调整它的大小更清晰的观看。 (!--)
您必须正确配置并启用Hive的表锁管理器。这需要安装ZooKeeper并设置一个ZooKeeper集合; 请参阅 ZooKeeper安装 。
重要提示:如果不这样做将会阻止HiveServer2处理并发查询请求,并可能导致数据损坏。
通过设置属性启用锁管理器 /etc/hive/conf/hive-site.xml 如下所示(用实例中的实际ZooKeeper节点名替换):
重要提示:启用表锁管理器而不指定有效的Zookeeper法定节点列表将导致不可预知的行为。确保两个属性都已正确配置。
(如果您仍在使用HiveServer1,还需要上述设置。不推荐使用HiveServer1;尽快迁移到HiveServer2。)
如果ZooKeeper没有使用ClientPort默认值,你需要设置 hive.zookeeper.client.port 与ZooKeeper使用的值相同。检查/etc/zookeeper/conf/zoo.cfg 以找到ClientPort值。如果ClientPort 设置为除2181(默认值)以外的任何值,设置hive.zookeeper.client.port 。例如,如果ClientPort 设置为2222,设置 hive.zookeeper.client.port 也是2222:
HiveServer2和HiveServer1的连接URL格式和驱动程序类别不同:
HiveServer2可以 配置 为验证所有连接; 默认情况下,它允许任何客户端连接。HiveServer2支持 Kerberos 或 LDAP 身份验证; 配置属性为hive.server2.authentication 。您还可以配置 可插入身份验证 ,它允许您为HiveServer2使用自定义身份验证提供程序; 和 HiveServer2 Impersonation ,它允许用户以连接用户的身份执行查询和访问HDFS文件,而不是启动HiveServer2守护进程的超级用户。有关更多信息,请参阅 Hive安全配置 。
警告:由于并发和安全问题,HiveServer1和Hive CLI在CDH 5中不推荐使用,并且将在未来版本中删除。Cloudera建议您尽快迁移到 Beeline 和 HiveServer2 。如果您使用HiveServer2的Beeline,则不需要Hive CLI。
HiveServer2和HiveServer1可以在同一个系统上并发运行,共享相同的数据集。这允许您运行HiveServer1以支持使用本机HiveServer1 Thrift绑定的Perl或Python脚本。
默认情况下,HiveServer2和HiveServer1都绑定到端口10000,所以至少其中一个必须配置为使用不同的端口。您可以通过hive -site.xml中的hive.server2.thrift.port 设置HiveServer2的端口属性。例如:
您也可以通过设置这些环境变量来指定端口(以及HiveServer2的主机IP地址):
⑷ 在hive查询中使用变量
Hive配置属性存储于 hiveconf 命名空间中,该命名空间中的属性是可读写的。在查询语句中插入 '${hiveconf:变量名}' ,就可以通过 hive -hiveconf来替换变量。例如,查询语句和执行方式如下:
需要注意的是:
Hive命令行变量,存储于 hivevar 命名空间中,该命名空间中的变量是可读写的。使用方式和hive配置属性类似,只是在查询语句中插入的是 '${hivecar:变量名}' ,其中命名空间"hivecar:"可以省略。例如:
因为命令行变量的命名空间是唯一可以省略的,因此:
其他替换变量的方法:
利用shell脚本设置hive查询语句中的变量
利用Python替换Hive查询语句中的变量