閱讀539 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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


實驗環境阿裏雲大數據開發套件

fd87fe983175d236c61cf6e9691c86ffcc9d19b8

接下來,我們看一下實現方法。


準備工作:

下載安裝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

2c3ff14808f453768c125d868501beca1c9783fd


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

SouthEast


c47869868fc90ff5dac5c93d30fe23db7d671613


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

c328977375bf37cdd94a30d3f9c4e163236c346f


5、打開已開通注冊的大數據開發套件,進入yinlin Project(你注冊的項目名稱);

ccf5899fc6f9d8891b8931f112410a6ff893250e

6、上傳兩個JAR,MaxCompute_Base64.jar,base64.jar;

7dc662d68d96761b9785db97a2129ee4174fb52d

7、分別注冊encode64、decode64函數,注意:同時引用剛才導入的兩個JAR,否則會因找不到第三方JAR編碼失敗。

394a72104de278f46f4de07670d85c4faba72657

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/

---阿裏大數據博文,問答,社群,實踐,有朋自遠方來,不亦說乎……

bba01b493e1c5d904e882b1c380673c6ebe49a98

最後更新:2017-08-13 22:38:36

  上一篇:go  前端優化:9 個技巧,提高 Web 性能
  下一篇:go  梯度下降法及其Python實現