我正在尝试确定一个程序/软件,该程序/软件将使我能够有效地提取大量大型CSV文件(总计40+
GB),并输出具有导入到Elasticsearch(ES)所需的特定格式的JSON文件。
jq可以有效地获取如下数据:
file1:
id,age,gender,wave
1,49,M,1
2,72,F,0
file2:
id,time,event1
1,4/20/2095,V39
1,4/21/2095,T21
2,5/17/2094,V39
按ID进行汇总(这样,多个文件中CSV行中的所有JSON文档都属于一个id条目),输出如下所示:
{"index":{"_index":"forum_mat","_type":"subject","_id":"1"}}
{"id":"1","file1":[{"filen":"file1","id":"1","age":"49","gender":"M","wave":"1"}],"file2":[{"filen":"file2","id":"1","time":"4/20/2095","event1":"V39"},{"filen":"file2","id":"1","time":"4/21/2095","event1":"T21"}]}
{"index":{"_index":"forum_mat","_type":"subject","_id":"2"}}
{"id":"2","file1":[{"filen":"file1","id":"2","age":"72","gender":"F","wave":"0"}],"file2":[{"filen":"file2","id":"2","time":"5/17/2094","event1":"V39"}]}
我用Matlab编写了一个脚本,但由于担心它的执行速度慢得多。我可能需要花费数月的时间来处理所有40
GB以上的数据。有人告诉我Logstash(ES首选的数据输入工具)在这种类型的聚合上并不擅长。
正如其中一项注释中所建议的那样,我最终使用SQL以我所需的格式导出JSON。另一个线程大有帮助。最后,我选择将给定的SQL表输出到其自己的JSON文件中,而不是将它们组合在一起(文件大小变得难以管理)。这样做的代码结构是这样的,您可以为Bulk
API和JSON数据行生成命令行:
create or replace function format_data_line(command text, data_str text)
returns setof text language plpgsql as $$
begin
return next command;
return next
replace(
regexp_replace(data_str,
'(\d\d\d\d-\d\d-\d\d)T', '\1 ', 'g'),
e' \n ', '');
end $$;
COPY (
with f_1 as(
SELECT id, json_agg(fileX.*) AS tag
FROM forum.file3
GROUP BY id
)
SELECT
format_data_line(
format('{"update":{"_index":"forum2","_type":"subject","_id":%s}}',a.id),
format('{"doc":{"id":%s,"fileX":%s}}',
a.id, a.tag))
FROM f_1 a
) TO '/path/to/json/fileX.json';
使用Bulk
API导入较大的文件也存在问题(内存不足Java错误),因此在特定时间只需要脚本就可以将数据的子集发送到Curl(在Elasticsearch中建立索引)。该脚本的基本结构为:
#!/bin/bash
FILE=$1
INC=100
numline=`wc -l $FILE | awk '{print $1}'`
rm -f output/$FILE.txt
for i in `seq 1 $INC $numline`; do
TIME=`date +%H:%M:%S`
echo "[$TIME] Processing lines from $i to $((i + INC -1))"
rm -f intermediates/interm_file_$i.json
sed -n $i,$((i +INC - 1))p $FILE >> intermediates/interm_file_$i.json
curl -s -XPOST localhost:9200/_bulk --data-binary @intermediates/interm_file_$i.json >> output/$FILE.txt
done
应在脚本文件目录下创建一个“中间”目录。该脚本可以另存为“ ESscript”,并在命令行上运行:
./ESscript fileX.json
问题内容: 简而言之,我需要能够将已编译的可执行文件粘贴到Java jar文件中,然后能够从Java运行它(可能通过)。 的 原因 ,是我想使用Java来包裹ImageMagick的可执行文件成分的图像处理弹性的Map Reduce任务。EMR只希望获取一个jar文件,因此我认为没有空间在旋转的数据节点上安装软件。 问题答案: jar中的可执行文件是一种资源,您可以通过Stream访问它,并将可执
终端中使用lldb运行可执行文件 进入lldb环境, 在终端内输入lldb回车 lldb 使用file命令, 将可执行文件包装成一个target (lldb) file test Current executable set to '/Users/shenyj/Documents/CodeForTest/staticOCLib/test' (x86_64). 运行可执行文件, 在刚刚的l
我创建了一个个人使用的基本应用程序。我的应用程序的支持使用快速Api和SQLite数据库。通常要运行我的启动和运行我的后端服务器,我必须使用以下命令: 我以前见过其他人创建python可执行文件。我也想这样做,但我需要它来启动uvicorn服务器。如何创建运行uvicorn服务器的python可执行文件? 还是只编写一个执行此操作的批处理脚本更好?
我正在用cucumber和硒网络司机一起工作。我的测试工作与预期的组合。为了实现跨浏览器测试,我添加了TestNG框架。为了验证我的跨浏览器测试运行良好,我单独使用TestNG运行了它,没有使用cucumber。它在Chrome和火狐浏览器中都运行完美。 } 测试开始了。xml文件: 我需要将TestNG测试与Cucumber设置相集成,这样我就可以用Cucumber运行整个测试。为此,我将cuc
工具:Win7、Launch4J3.5、简单的Hello world Java控制台应用程序(绑定在JAR文件中) 大家好, 我有一个基本的JAVA控制台应用程序,它不请求任何输入,只是一个打开控制台窗口并显示Hello World文本的简单应用程序。 包装程序清单:C:\launch4j\manifest\uac.exe.manifest(也尝试保留此空白) 其余的都是默认的。