MaxCompute SQL引用第三方Base64JAR實現編解碼
BASE64和其他相似的編碼算法通常用於轉換二進製數據為文本數據,其目的是為了簡化存儲或傳輸。更具體地說,BASE64算法主要用於轉換二進製數據為ASCII字符串格式。
下麵我們通過阿裏雲MaxCompute 和大數據開發套件,引用第三方的Base64 JAR,來實現字符串的編碼、解碼;
效果如下:
---base64編碼
select id,encode_base64('liuxiaowen1234') from alian.user_info limit 1;
bGl1eGlhb3dlbjEyMzQ=
---base64解碼
select id,decode_base64('bGl1eGlhb3dlbjEyMzQ=') from alian.user_info limit 1;
liuxiaowen1234
實驗環境阿裏雲大數據開發套件
接下來,我們看一下實現方法。
準備工作:
下載安裝Eclipse;
開通阿裏雲MaxCompute ,參考:https://help.aliyun.com/document_detail/27815.html
大數據開發套件,參考:https://help.aliyun.com/document_detail/30263.html
注冊Accesskey,參考:https://help.aliyun.com/document_detail/27803.html;
開始實驗:
1、首先在Eclipse創建你的項目,下載並配置好MaxCompute UDF插件環境,參考:https://help.aliyun.com/document_detail/27984.html
2、把附件的base64.jar加載到lib中,地址:https://yq.aliyun.com/attachment/download/?spm=0.0.0.0.AR40XR&filename=base64.z...[%E9%9A%90%E6%9E%97].1501763402.zip
3、創建兩個MaxCompute UDF,分別是EncodeBase64()編碼、DecodeBase64()解碼;
代碼如下:
package com.yinlin.udf;
import com.aliyun.odps.io.Text;
import com.aliyun.odps.udf.UDF;
import com.snda.base64.*;//這裏是引用的第三方base64.jar
public class EncodeBase64 extends UDF{
Text result = new Text();
public EncodeBase64() {
}
public String evaluate(String str){
if (str == null || str.equals("")) {
return null;
}
try {
byte[] b = str.getBytes();
result.set(Base64.encodeBase64(b));
} catch (Exception e) {
e.printStackTrace();
return null;
}
return result.toString();
}
}
package com.yinlin.udf;
import com.aliyun.odps.io.Text;
import com.aliyun.odps.udf.UDF;
import com.snda.base64.*;
public class DecodeBase64 extends UDF{
Text result = new Text();
public DecodeBase64() {
}
public String evaluate(String str){
if (str == null || str.equals("")) {
return null;
}
try {
byte[] b = str.getBytes();
result.set(Base64.decodeBase64(b));
} catch (Exception e) {
e.printStackTrace();
return null;
}
return result.toString();
}
}
4、導出新的JAR,命名為MaxCompute_Base64.jar;下載地址:https://yq.aliyun.com/attachment/download/?spm=0.0.0.0.AR40XR&filename=MaxCompu...[%E9%9A%90%E6%9E%97].1501763771.zip
5、打開已開通注冊的大數據開發套件,進入yinlin Project(你注冊的項目名稱);
6、上傳兩個JAR,MaxCompute_Base64.jar,base64.jar;
7、分別注冊encode64、decode64函數,注意:同時引用剛才導入的兩個JAR,否則會因找不到第三方JAR編碼失敗。
8、輸入MaxCompute SQL,完成Base64編解碼實驗。
---base64編碼
select id,encode_base64('liuxiaowen1234') from alian.user_info limit 1;
---base64解碼
select id,decode_base64('bGl1eGlhb3dlbjEyMzQ=') from alian.user_info limit 1;
阿裏巴巴大數據-玩家社區 https://yq.aliyun.com/teams/6/
---阿裏大數據博文,問答,社群,實踐,有朋自遠方來,不亦說乎……
最後更新:2017-08-13 22:38:36