簡體   English   中英

如何將數據從 Java 對象加載到 Kudu 表?

[英]How do I load data from a Java object to Kudu table?

我有一個 Java 代碼,我將我的 JSON 字符串轉換為 Java 對象。 我將該字符串的值存儲到對象中。

我接下來需要做的是將這些值存儲在 Kudu 表中。 我只想知道如果可能的話,如何使用 Docker 容器來做到這一點。 或者有沒有其他方法可以做到這一點。

下面是我寫的代碼:

import com.google.gson.Gson;
import java.util.Map;

class UserDetails {public String id; public int type; public Map<String, String> source; public String source_uri; public long timestamp; public String options; public Map<String, String> payload;}

public class JSONToJSONObject {
    public static void main(String[] args) {
        String json = "{'id':'46B56A42-6500-6500-59DF-68E26AD11BCE','type':1,'source':{'org':'JJV','site':'US11','area':'MFG','gen':'3GT','line':'TAM04','cell':'LF','zone':'Z2B','process':'Takeover'},'source_uri':'JJV/US11/MFG/3GT/TAM04/LF/Z2B','timestamp':1557254610759,'options':null,'payload':{'dcp_id':'DCP003','trigger_count':1593,'lot_number':'B00SDZK','pallet_id':0,'status_code':1,'station_code':1,'pallet_ts':1557254568000,'mold_open_1_ts':1557254570000,'mold_open_2_ts':1557254568000,'mold_open_3_ts':1557254573000,'mold_open_4_ts':1557254570000,'butterfly_pick_a_ts':1557254574000,'butterfly_pick_b_ts':1557254572000,'robot_pick_1_ts':1557254572000,'robot_pick_2_ts':1557254574000,'pickpallet_xfer_ts':1557254610764,'x_200ps_vac_peak':0,'x_201ps_vac_peak':0,'x_202ps_vac_peak':0,'takeover_xfer_1_PS206':0,'takeover_xfer_2_PS206':0,'takeover_xfer_3_PS206':0,'nest_a_vac':0,'nest_b_vac':0,'mold_open_1_hs':9,'mold_open_2_hs':7,'mold_open_3_hs':2,'mold_open_4_hs':9,'butterfly_pick_a_hs':4,'butterfly_pick_b_hs':5,'robot_pick_1_hs':5,'robot_pick_2_hs':4,'pallet_xfer_hs':0}}";
        Gson gson = new Gson();
        UserDetails user = gson.fromJson(json, UserDetails.class);
        System.out.println("ID is: " + user.id);
        System.out.println("Type is: " + user.type);
        System.out.println("Source is: " + user.source);
        System.out.println("Source URI is: " + user.source_uri);
        System.out.println("Timestamp is: " + user.timestamp);
        System.out.println("Options is: " + user.options);
        System.out.println("Payload is: " + user.payload);
    }
}

此外,在我的 Ubuntu VM 上安裝 Docker 后,我正在嘗試按照https://kudu.apache.org/docs/quickstart.html頁面中給出的步驟進行操作。 但是克隆 git repo 會引發如下錯誤:

致命:包在偏移量____處有壞對象:返回-5

我創建了一個示例並將其記錄在我的 github repo 中 為了在本地啟動 kudu,我使用andreysabitov/impala-kudu docker鏡像並使用以下 docker 命令啟動容器:

docker run -d --name kudu-impala \
    -p 8050:8050 -p 8051:8051 -p 7050:7050 -p 7051:7051 \
    -p 25000:25000 -p 25010:25010 -p 25020:25020 \
    -p 50070:50070 -p 50075:50075 \
    -p 21050:21050 -p 28000:28000 \
    -e HOSTNAME=localhost \
    --hostname localhost \
    andreysabitov/impala-kudu:latest

在 Kudu 中存儲 java 對象是在這個類中完成的。 負責將 object 翻譯成 Kudu 列的部分如下所示:

KuduTable table = clientProvider.get().openTable(tableName());
Upsert upsert = table.newUpsert();
upsert.getRow().addString("id", userInfo.getId());
upsert.getRow().addString("name", userInfo.getName());
upsert.getRow().addLong("counter", userInfo.getCounter());
session.apply(upsert);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM