实际上,我正在通过 Cygnus 向 Cosmos 发送数据。 Cygnus 放置数据的 Cosmos 目录是,例如/user/myUser/mysetdata。我使用以下列创建了我的配置单元表:recvTimeTs、recvTime、entityId、entityType、attrName、attrType、attrValue。
现在,我想通过 HttpFS 将数据直接放入 Cosmos 中,并放入与 Cygnus 相同的目录中。
“.txt”文件格式怎么可能?必须用逗号分隔吗?例如:
recvTimeTs;recvTimem;entityId;entityType;attrName;attrType;attrValue 值;值;值;...
最佳答案
Hive 表包含位于 HDFS 文件夹中的文件内的结构化数据,该文件夹在 Hive 表创建命令中给出。
使用 Cygnus 0.1,此类结构化数据是通过使用类似 CSV 的文件来实现的,因此将新文件添加到 HDFS 文件夹或将新数据附加到该文件夹中已存在的文件非常简单组成新的类似 CSV 的数据行。分隔符必须与创建表时指定的相同,例如:
create external table <table_name> (recvTimeTs bigint, recvTime string, entityId string, entityType string, attrName string, attrType string, attrValue string) row format delimited fields terminated by '|' location '/user/<myusername>/<mydataset>/';
因此,作为示例分隔符 |
,新数据行必须类似于:
<ts>|<ts_ms>|<entity_name>|<entity_type>|<attribute_name>|<attribute_type>|<value>
从Cugnus 0.2(含)开始,结构化数据是通过使用类似Json的文件来实现的。在这种情况下,您不必处理分隔符,也不必创建表(请参阅 this question ),因为 Json 不使用分隔符并且表创建是自动的。在这种情况下,您必须按照任何一种格式(取决于您将数据存储在 row
还是 column 中)来编写一个新文件或新数据,以附加到现有文件中分别为
模式):
{"recvTimeTs":"13453464536", "recvTime":"2014-02-27T14:46:21", "entityId":"Room1", "entityType":"Room", "attrName":"temperature", "attrType":"centigrade", "attrValue":"26.5", "attrMd":[{name:ID, type:string, value:ground}]}
{"recvTime":"2014-02-27T14:46:21", "temperature":"26.5", "temperature_md":[{"name":"ID", "type":"string", "value":"ground"}]}
值得一提的是,存在负责将类 0.1 格式转换为类 0.2(或更高)格式的脚本。
关于fiware - Cosmos HttpFS 文件格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24246991/