当前位置: 首页 > 知识库问答 >
问题:

与Pig Apache连接后创建包的困难

苏波涛
2023-03-14

我需要对我的一部分数据进行非正规化处理。我有一些数据donnees_porteur(在JSON中),我想在其中集成donnees_enfant(在CSV中)

donnees_enfant = LOAD '/user/cloudera/enfn.csv' USING PigStorage(';') AS (NUM_CART_enf,NUM_ENFN,ANNEES_NAIS);   
donnees_porteur = LOAD '/user/cloudera/part*' USING JsonLoader();
    donnees_porteur: {
Id: bytearray,
Infos: (cod_civl: bytearray,lb_civl: bytearray,nom: bytearray,prnm: bytearray,age: bytearray),
Geo: (cod_regn: bytearray,cod_depr: bytearray,cod_comm: bytearray,cp: bytearray,lb_comm: bytearray,cod_npai: bytearray,dt_npai: bytearray,email: bytearray),
Socio: (nb_enf: bytearray,cod_socio: bytearray,lb_socio: bytearray,cod_socio_conj: bytearray,lb_socio_conj: bytearray,cod_sit_faml: bytearray,lb_sit_faml: bytearray),
Segm: {(cod_segm: bytearray,cod_typ_segm: bytearray,dat_deb: bytearray,dat_fin: bytearray)}}
test= FOREACH 
    (JOIN donnees_porteur BY Id LEFT, donnees_enfant BY NUM_CART_enf) 
    GENERATE donnees_porteur::Id AS ID, 
    {(donnees_enfant::NUM_CART_enf,donnees_enfant::NUM_ENFN)} AS ENFANT:{(id_enf,numero)};

--我把一个波特家的所有孩子都排在一排

test2 = GROUP test BY ID;

--我得到了一个袋子,里面装着不同的两元波特,每个人都有一个孩子。所以我需要重建线路。我尝试:

test3= FOREACH test2 GENERATE test;

但这并不好。

结果测试2:

(0,{(0,{(0,2)}),(0,{(0,3)}),(0,{(0,1)})})
(1,{(1,{(1,3)}),(1,{(1,1)}),(1,{(1,2)})})
(2,{(2,{(2,1)}),(2,{(2,2)})})

但我想获得:

(0,({(0,2),(0,3),(0,1)}))
(1,({(1,3),(1,1),(1,2)}))
(2,({(2,1),(2,2)}))

你能帮我吗?

denorm2 = FOREACH (JOIN donnees_porteur BY Id LEFT, donnees_enfant BY NUM_CART_enf) GENERATE donnees_porteur::Id AS ID, 
    donnees_porteur::Infos AS INFOS, 
    donnees_porteur::Geo AS Geo,
    donnees_porteur::Segm AS Segm,
    {(donnees_enfant::NUM_CART_enf,donnees_enfant::NUM_ENFN)} AS ENFANT:{(id_enf,numero)};

以ID作为字段,INFOS、GEO、作为元组,Segm作为一个像ENFANT一样的包

共有1个答案

端木涵润
2023-03-14

test3=foreach test2生成$0,$1.enfant;

test3将有组,只有ENFANT部分

 类似资料:
  • 我有div,可以拖放到绘图区域。可以使用鼠标从源endpoint拖放到目标endpoint手动连接这些div。在这样创建的连接上,连接被分离,但endpoint保留,删除的连接可以通过上述相同的手动过程重新创建。现在,我还将以json格式的连接节点流程图形式的绘图保存到磁盘文件中。在加载文件时,流程图会完美地显示所有连接和节点。现在我在点击一个节点时删除一个连接,它就可以工作了。但是现在我不能再次

  • 我使用具有以下设置的Hikary连接池: 在getConnection()之后,hikari尝试获取到实例的2个连接,但只将一个连接放在连接池中。我怎样才能修好它?hikari版本是

  • 我正在尝试使用ApacheDBCP2使用连接池。 我的最大总连接是5。我关闭每一个连接后,它被使用。 但在连接池中关闭5次连接后,我仍然获得连接。 关闭5个连接后,何时ping数据库以获取连接?或者,它将从连接池本身获取数据,而不访问数据库。 下面是我的示例代码片段。请纠正我对连池的理解。

  • 好的。所以我已经尝试将设备p2p与流连接了一周。仍然没有结果,我变得疯狂和绝望。请不要将我发送到Ray Wendderlich教程和GCD wiki或CFStream Guide,因为我已经将其冲浪到洞。 So 1)这里的变体i > 获取我的设备的Ip 在其他设备的文本字段中手动输入ip 在一个设备上初始化网络通信 错误-连接到主机。 (void)initNetworkCommunication:

  • 为了和Azure IoT设备通信,在创建设备之后会获得设备连接字符串,我们需要用这个字符串创建一个连接凭据。 请求方式: "|4|2|1|connectionString|" 参数 connectionString 设备连接字符串 返回值: "|4|2|1|1|\r" 创建成功 "|4|2|1|2|reason|\r" 创建失败 参数 reason 创建失败的原因 Arduino样例: softS

  • 我有一张这样定义的表。其中是主键,是来自另一个表的外键。它在我的笔记本电脑上运行,因此,它是一个本地数据库。在我的表中,我有大约900万条条目。我运行以下命令为表创建新索引: 它运行了大约 10 分钟,我收到以下错误消息: 我检查了我的日志,结果是这样的: 虽然,我收到了一条错误消息,但当我检查索引时,结果是这样的。我不知道问题可能是什么,以及如何解决它,也不知道我创建的索引是否真的有效。有什么想