- 计算
- 网络
- 存储与CDN
-
数据库
-
云数据库 RDS MySQL
- 产品概述
- 产品定价
- 快速入门
- 操作手册
- 案例实践
- API文档
-
常见问题
- 如何访问MySQL实例?
- MySQL实例的安全性如何?
- 如何向MySQL实例中导入数据?
- 如何向MySQL实例中导出数据?
- 如何创建新用户并授予权限?
- QPS是如何统计的?
- 什么是内存溢出?
- 默认的最大连接数是多少?
- 如何查看数据库运行状态?
- 如何查看MySQL实例的SlowLog?
- 如何修改MySQL实例的配置参数?
- 如何安装和卸载插件?
- 如何使用MySQL-Proxy使MySQL实例可以通过外网访问?
- 何查看MySQL实例的各项监控指标?
- 是否可以查看云数据库运行状态?
- 默认的配置是针对哪种存储引擎优化的?
- 如何在云主机上搭建云数据库从库并进行主从同步呢?
- 如何正确设置字符集?
- 如何查询MySQL实例的客户端和服务器端版本
- 相关协议
- 云数据库 RDS PostgreSQL
- 云数据库 Redis
- 云数据库 MongoDB
- 分布式数据库 InDDB
- 云数据库 Memcache
-
云数据库 RDS MySQL
- 安全
- 人工智能
-
大数据
- ES服务 Elasticsearch
- 数据仓库 DW
- 托管Hadoop
- 管理和监控
-
API
-
对象存储OSS
- 创建Bucket-CreateBucket
- 获取Bucket信息-DescribeBucket
- 更改Bucket属性-UpdateBucket
- 删除Bucket-DeleteBucket
- 前缀列表查询 – PrefixFileList
- 上传文件 – PutFile
- 表单上传 – PostFile
- 秒传文件-UploadHit
- 下载文件-GetFile
- 查询文件基本信息-HEADFile
- 删除文件 – DeleteFile
- 初始化分片 – InitiateMultipartUpload
- 上传分片 – UploadPart
- 完成分片 – FinishMultipartUpload
- 放弃分片 – AbortMultipartUpload
- 查看配额状态-GetUFileQuota
- 查询配额支付价格-GetUFileQuotaPrice
- 查看配额使用报表-GetUFileReport
- 获取配额信息-GetUFileQuotaInfo
- 获取已上传成功的分片列表-GetMultiUploadPart
- 更新令牌-UpdateUFileToken
- 删除令牌-DeleteUFileToken
- 获取令牌信息-DescribeUFileToken
- OSS 错误码列表
- 操作文件的Meta信息 – OpMeta
- API文档综述
-
弹性公网IP EIP
- 1、申请弹性IP-AllocateEIP
- 2、获取弹性IP信息-DescribeEIP
- 3、更新弹性IP属性-UpdateEIPAttribute
- 4、释放弹性IP-ReleaseEIP
- 5、绑定弹性IP-BindEIP
- 6、解绑弹性IP-UnBindEIP
- 7、调整弹性IP带宽-ModifyEIPBandwidth
- 8. 修改弹性IP出口权重-ModifyEIPWeight
- 9. 获取弹性IP价格-GetEIPPrice
- 10. 获取弹性IP带宽改动价格-GetEIPUpgradePrice
- 11. 获取弹性IP计费方式-GetEIPPayMode
- 12. 设置弹性IP计费方式-SetEIPPayMode
- 13. 申请内网虚拟IP-AllocateVIP
- 14. 获取内网虚拟IP信息-DescribeVIP
- 15. 释放内网虚拟IP- ReleaseVIP
- 16. 创建带宽包-CreateBandwidthPackage
- 17. 获取带宽包信息-DescribeBandwidthPackage
- 18. 删除带宽包-DeleteBandwidthPackage
- 19. 开通共享带宽-AllocateShareBandwidth
- 20. 获取共享带宽信息-DescribeShareBandwidth
- 21. 调整共享带宽-ResizeShareBandwidth
- 22. 关闭共享带宽-ReleaseShareBandwidth
- 23. 将EIP加入共享带宽-AssociateEIPWithShareBandwidth
- 24. 将EIP移出共享带宽-DisassociateEIPWithShareBandwidth
- 25. 获取带宽用量-DescribeBandwidthUsage
- 26. 更新防火墙属性-UpdateFirewallAttribute
- 27. 获取防火墙信息-DescribeFirewall
- 28. 应用防火墙-GrantFirewall
- 29. 错误码
-
云服务器ECS
- 1、获取VNC登录信息-GetUHostInstanceVncInfo
- 2、启动云服务器-StartUHostInstance
- 3、重启云服务器-RebootUHostInstance
- 4、关闭云服务器-StopUHostInstance
- 5、获取云服务器业务组列表-DescribeUHostTags
- 6、字段规范
- 7、删除云服务器-TerminateUHostInstance
- 8、重置云服务器密码-ResetUHostInstancePassword
- 9、修改云服务器业务组-ModifyUHostInstanceTag
- 10、修改云服务器名-ModifyUHostInstanceName
- 11、获取挂载磁盘的升级价格-GetAttachedDiskUpgradePrice
- 12、修改云服务器配置-ResizeUHostInstance
- 13、获取升级配置价格-GetUHostUpgradePrice
- 14、创建云服务器-CreateUHostInstance
- 15、移除硬件隔离组-LeaveIsolationGroup
- 16、创建硬件隔离组-CreateIsolationGroup
- 17、删除自制镜像-TerminateCustomImage
- 18、创建自制镜像-CreateCustomImage
- 19、导入镜像-ImportCustomImage
- 20、修改云服务器备注-ModifyUHostInstanceRemark
- 21、修改挂载的磁盘大小-ResizeAttachedDisk
- 22、模拟服务器掉电-PoweroffUHostInstance
- 23、重装系统-ReinstallUHostInstance
- 24、获取镜像列表-DescribeImage
- 25、获取云服务器价格-GetUHostInstancePrice
- 26、获取云服务器信息-DescribeUHostInstance
- 27、普通机型开启CDP-UpgradeToArkUHostInstance
-
对象存储OSS
- 用户提醒
- 服务等级协议(SLA)
- 企业上云常见问题
- 其他协议
- 云市场
- 开发者
- 账户管理
-
4.1 支持自定义UDF函数
下面提供2种方式用于编写udf函数,第一种是通过Eclipse,第二种是直接在托管Hadoop集群的master节点上利用shell脚本编译
在Eclipse中编写自定义Hive udf函数
1 在eclipse中新建java project: hiveudf;
2 在hiveudf工作中添加一个文件夹lib,lib包需要拷贝相关jar包,添加完毕后如下图所示:
这四个包在可在uhadoop-******-master1的以下位置找到:
/home/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.6.0-cdh5.4.9.jar/home/hadoop/share/hadoop/hdfs/hadoop-hdfs-2.6.0-cdh5.4.9.jar/home/hadoop/share/hadoop/common/hadoop-common-2.6.0-cdh5.4.9.jar/home/hadoop/hive/lib/hive-exec-1.2.1.jar3 把lib目录下的所有jar包 Add to build Path
4 创建一个UDFLower 类并且继承hive的UDF类,新建的UDFLower类的package请填空值。
import org.apache.hadoop.hive.ql.exec.UDF;import org.apache.hadoop.io.Text;public class UDFLower extends UDF{public Text evaluate(final Text s){if (null == s){return null;}return new Text(s.toString().toLowerCase());}}最终的结构如图所示:
5 打包UDFLower.jar
– 执行导出
– 选择JAR file
– 修改导出目录名称,并点击Finish,UDFLower.jar便制作完成了。
– 通过ssh命令上传至hadoop master1节点
如果master1已绑定外网,可直接通过外网IP上传,如果没有,请通过有外网IP的机器跳转。
在Linux下编写自定义Hive udf函数
● 创建代码
登录hadoop-******-master1节点,进入/data目录,创建udf代码:
cd /datamkdir hive_udftouch UDFLower.javaUDFLower.java代码如下:
import org.apache.hadoop.hive.ql.exec.UDF;import org.apache.hadoop.io.Text;public class UDFLower extends UDF{public Text evaluate(final Text s){if (null == s){return null;}return new Text(s.toString().toLowerCase());}}● 同目录下创建编译文件compile.sh
#!/bin/bashrm -f UDFLower.jarrm -f UDFLower*.classexport HADOOP_MAPRED_HOME=/home/hadoopCLASSPATH=.:$HIVE_HOME/conffor i in /home/hadoop/share/hadoop/common/*.jar ; doCLASSPATH=$CLASSPATH:$idonefor i in /home/hadoop/hive/lib/*.jar ; doCLASSPATH=$CLASSPATH:$idonejavac -cp $CLASSPATH UDFLower.javajar cvf UDFLower.jar UDFLower.class执行sh compile.sh后将在同目录下产生UDFLower.jar
利用上述生成的UDFLower.jar进行Hive示例
● 进入UDFLower.jar所在目录,上传至HDFS目录
hadoop fs -put UDFLower.jar /tmp/
● 测试数据准备
测试文件test.txt,内容如下:
HELLO WORLD HEHE 上传至HDFS
hadoop fs -put test.txt /tmp/ - Hive Cli中创建相关数据表,并load数据
hive> create table test_hive_udf (name string);hive> load data inpath '/test/1/test.txt' into table test_hive_udf;创建temporary function
hive> create temporary function my_lower as 'UDFLower'; 使用自定义UDF
hive> select name from test_hive_udf;hive> select my_lower(name) from test_hive_udf;2 支持json格式数据
● 数据准备
上传数据test.json数据到hdfs
test.json数据如下:
{"id":1234544353,"text":"test_hive_json"} 上传数据到HDFS
hdfs dfs -put test.json /tmp/test.json - 加载依赖包
hive解析json格式的数据依赖hive-json-serde.jar,如果通过beeline无需再通过add jar加载对应的jar包。如果你使用的hive cli接口需要add jar,做如下操作:
hive> add jar $HIVE_HOME/lib/hive-json-serde.jar; hive1.2.1版本尚未提供此包
- 创建hive表格
hive> CREATE TABLE test_json(id BIGINT,text STRING)ROW FORMAT SERDE'org.apache.hadoop.hive.contrib.serde2.JsonSerde' STORED AS TEXTFILE;● 加载数据
hive> LOAD DATA INPATH "/tmp/test.json" OVERWRITE INTO TABLE test_json; ● 执行查询
返回如下说明使用json文件解析成功
hive> select * from test_json;OK1234544353 test_hive_json3 使用正则匹配
● 数据准备
上传测试数据nginx_log到hdfs
nginx_log数据如下
180.173.250.74 168.34.34 上传至HDFS
hdfs dfs -put nginx_log /tmp/nginx_log - 加载依赖包
hive正则匹配使用依赖hive-contrib.jar,如果通过beeline无需再通过add jar加载对应的jar包。如果你使用的hive cli接口需要add jar,做如下操作:
hive> add jar $HIVE_HOME/lib/hive-contrib.jar; ● 创建测试表格
hive> CREATE TABLE logs(host STRING,identity STRING)ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'WITH SERDEPROPERTIES ("input.regex" = "([^ ]*) ([^ ]*)","output.format.string" = "%1$s %2$s")STORED AS TEXTFILE;注解:创建表格的时候需要指定ROW FORMAT SERDE,SERDEPROPERTIES中的 input.regex和output.format.string
- 加载数据
hive> LOAD DATA INPATH "/tmp/nginx_log" INTO TABLE logs; ● 测试数据
返回如下说明正则表达式使用成功
hive> select * from logs;OK180.173.250.74 168.34.34