91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

0011-如何在Hive & Impala中使用UDF

發布時間:2020-07-18 02:58:45 來源:網絡 閱讀:711 作者:Hadoop實操 欄目:大數據

溫馨提示:要看高清無碼套圖,請使用手機打開并單擊圖片放大查看。

1.文檔編寫目的

本文檔講述如何開發Hive自定義函數(UDF),以及如何在Impala中使用Hive的自定義函數,通過本文檔,您將學習到以下知識:

1.如何使用Java開發Hive的自定義函數

2.如何在Hive中創建自定義函數及使用

3.如何在Impala中使用Hive的自定義函數

這篇文檔將重點介紹UDF在Hive和Impala的使用,并基于以下假設:

1.集群環境正常運行

2.集群安裝Hive和Impala服務

以下是本次測試環境,但不是本操作手冊的硬限制:

1.操作系統:Redhat6.5

2.CDH和CM版本為5.11.1

3.采用sudo權限的ec2-user用戶進行操作

2.UDF函數開發

使用Intellij工具開發Hive的UDF函數,進行編譯;

1.使用Intellij工具通過Maven創建一個Java工程

0011-如何在Hive & Impala中使用UDF

2.pom.xml文件中增加Hive包的依賴

<dependency>
  <groupId>org.apache.hive</groupId>
  <artifactId>hive-exec</artifactId>
  <version>1.1.0</version>
</dependency>

3.Java示例代碼如下

package com.peach.date;

import org.apache.hadoop.hive.ql.exec.UDF;
import java.text.ParseException;
import java.text.SimpleDateFormat;

/**
 * SQL的UDF日期相關工具類
 * Created by peach on 2017/8/24.
 */
public class DateUtils extends UDF {
 /**
     * 將日期字符串格式化為標準的日期格式
     * 如:
     * 2017-8-9 to 2017-08-09
     * 2017-08-09 9:23:3 to 2017-08-0909:23:03
     * @param sdate
 * @param pattern
 * @return
 */
 public static String evaluate(Stringsdate, String pattern) {
        String formatDate = sdate;
 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            formatDate =sdf.format(sdf.parse(sdate));
 } catch (ParseException e) {
            e.printStackTrace();
 }
 return formatDate;
 }
}

此處使用一個簡單的日期轉換自定義函數來做事例,注意此處需要集成UDF類,重寫evaluate方法,來實現自己定義函數。

4.編譯jar包

前提條件是已配置Maven的環境變量,命令行進入工程目錄,執行如下命令:

 mvn clean  package 

0011-如何在Hive & Impala中使用UDF

0011-如何在Hive & Impala中使用UDF

3.Hive使用自定義函數(UDF)

將章節2中編譯好的sql-udf-utils-1.0-SNAPSHOT.jar上傳到集群服務器

3.1創建臨時UDF

1.進入Hive的shell命令行,執行如下命令,創建臨時函數

add jar  /home/ec2-user/sql-udf-utils-1.0-SNAPSHOT.jar;create  temporary function parse\_date as 'com.peach.date.DateUtils'; 

0011-如何在Hive & Impala中使用UDF

2.在命令行測試該UDF函數

select  parse\_date(dates, 'yyyy-MM-dd HH:mm:ss') from date\_test1; 

0011-如何在Hive & Impala中使用UDF

3.2創建永久UDF

1.在HDFS中創建相應目錄,將sql-udf-utils-1.0-SNAPSHOT.jar包上傳至該目錄

ec2-user@ip-172-31-8-141  ~$ hadoop dfs -mkdir /udfjar
ec2-user@ip-172-31-8-141  ~$ hadoop dfs -put sql-udf-utils-1.0-SNAPSHOT.jar /udfjar 

0011-如何在Hive & Impala中使用UDF

注意:目錄udfjar和sql-udf-utils-1.0-SNAPSHOT.jar的權限,所屬用戶為hive

2.進入Hive的shell命令行,執行如下命令創建永久的UDF

create  function default.parse\_date as 'com.peach.date.DateUtils' using jar  'hdfs://ip-172-31-9-186.ap-southeast-1.compute.internal:8020/udfjar/sql-udf-utils-1.0-SNAPSHOT.jar'; 

0011-如何在Hive & Impala中使用UDF

注意:在創建的時候如果帶有數據庫名,則該UDF函數只對該庫生效,其它庫無法使用該UDF函數。

3.在命令行測試該UDF

 select  parse\_date(dates, 'yyyy-MM-dd HH:mm:ss') from date\_test1; 

0011-如何在Hive & Impala中使用UDF

4.驗證永久UDF函數是否生效

0011-如何在Hive & Impala中使用UDF

重新打開Hive CLI能正常使用創建的UDF函數。

4.Impala使用Hive的UDF

1.在Impala shell命令行執行元數據同步命令

ip-172-31-10-156.ap-southeast-1.compute.internal:21000  > invalidate metadata; 

0011-如何在Hive & Impala中使用UDF

2.使用UDF函數

ip-172-31-10-156.ap-southeast-1.compute.internal:21000  > select parse\_date(dates,'yyyy-MM-dd HH:mm:ss') from date\_test1; 

0011-如何在Hive & Impala中使用UDF

5.常見問題

1.通過Impala CLI命令行,使用UDF自定義函數時異常

Connected to ip-172-31-10-156.ap-southeast-1.compute.internal:21000

Server version: impalad version 2.7.0-cdh6.10.2 RELEASE (build 38c989c0330ea952133111e41965ff9af96412d3)

[ip-172-31-10-156.ap-southeast-1.compute.internal:21000] > select parse_date(dates) from date_test1;

Query: select parse_date(dates) from date_test1

Query submitted at: 2017-08-24 12:51:44 (Coordinator: http://ip-172-31-10-156.ap-southeast-1.compute.internal:25000)

ERROR: AnalysisException: default.parse_date() unknown

0011-如何在Hive & Impala中使用UDF

元數據未同步導致,執行如下命令進行元數據同步:

[ip-172-31-10-156.ap-southeast-1.compute.internal:21000] > invalidate metadata;

2.在Impala CLI命令行執行,異常如下

[ip-172-31-10-156.ap-southeast-1.compute.internal:21000] > select parse_date(dates,'yyyy-MM-dd HH:mm:ss') from date_test1;

Query: select parse_date(dates,'yyyy-MM-dd HH:mm:ss') from date_test1

Query submitted at: 2017-08-24 13:02:14 (Coordinator: http://ip-172-31-10-156.ap-southeast-1.compute.internal:25000)

ERROR: Failed to copy hdfs://ip-172-31-9-186.ap-southeast-1.compute.internal:8020/udfjar/sql-udf-utils-1.0-SNAPSHOT.jar to /var/lib/impala/udfs/sql-udf-utils-1.0-SNAPSHOT.2386.2.jar:

Error(2): No such file or directory

0011-如何在Hive & Impala中使用UDF

在Impala Daemon服務器上,目錄不存在導致

解決方法:

在所有Impala Daemon服務器創建/var/lib/impala/udfs目錄


[ec2-user@ip-172-31-10-156 lib]$ sudo mkdir -p impala/udf

[ec2-user@ip-172-31-10-156 lib]$ sudo chown -R impala:impala impala/

注意:目錄所屬用戶及組

溫馨提示:要看高清無碼套圖,請使用手機打開并單擊圖片放大查看。
0011-如何在Hive & Impala中使用UDF

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

渭源县| 佛山市| 宣汉县| 兴化市| 阳山县| 广州市| 双牌县| 铜陵市| 柘城县| 新昌县| 姜堰市| 比如县| 东港市| 舟曲县| 辉南县| 西乡县| 霍邱县| 阿克陶县| 广昌县| 巴林右旗| 宝丰县| 凤山县| 贞丰县| 巍山| 磐石市| 新宁县| 和田市| 怀安县| 灵宝市| 峨眉山市| 温宿县| 集贤县| 青冈县| 阿拉善盟| 云和县| 顺昌县| 怀远县| 沧源| 宁明县| 梅河口市| 怀柔区|