Kettle读取按行分割的文件
Kettle是一个开源的ETL工具,支持来自众多的数据源间的数据迁移,笔者也是N年前有所使用,最近在迁移一批来自HDFS的文本数据时,又想到了这个工具的使用,来HDFS的文本常会以行进行分割存储,笔者这次遇到的就是6千余万行的json数据,总体量在20G,在网上找了一圈也没找到读取多行文本的操作,于是就自己摆弄了一下,特此作为记录:
数据格式如下:
{"type": "Feature", "properties": {},"geometry": {"type": "Polygon","coordinates": [[[-19.441364292429924, 65.52333266640196], [-19.441369748908993, 65.52335128397081], [-19.441456975615232, 65.52334689547278], [-19.441451519136184, 65.5233282779008], [-19.441364292429924, 65.52333266640196]]]}}
{"type": "Feature", "properties": {},"geometry": {"type": "Polygon","coordinates": [[[-22.023537553224426, 64.34071231744036], [-22.023766291888357, 64.34079685621145], [-22.023896688463573, 64.34073070136526], [-22.02366796389063, 64.340646160667], [-22.023537553224426, 64.34071231744036]]]}}
{"type": "Feature", "properties": {},"geometry": {"type": "Polygon","coordinates": [[[-20.53351958043648, 64.21502080919846], [-20.533556158627654, 64.21504083748084], [-20.533638377500047, 64.21501242439349], [-20.53360179930887, 64.21499239609055], [-20.53351958043648, 64.21502080919846]]]}}
按行进行分割的JSON,需要将其导入到postgresql中:
在kettle中新建“转换”,在输入中选择文本文件输入,添加需要进行抽取的问题吧:
在“内容”管理卡将格式改为Unix,在“字段”管理卡点击获取字段即可对定义字段名称:
然后就可以预览记录:
为了读取JSON中的某个Key下的值,我们在之后可以加入一个“JSON输入”,在“文件”管理卡选择“源定义在一个字段里”,“从字段获取源”中选择上一步输出的字段:
在“字段”管理卡用JSONPath配置字段:
接下来就可以通过预览转换来预览过程:
之后就可以按照入库的方式配置输出了。
打完收工,测试下来,6千5百万条文本数据到postgresql 用时37分钟,执行效率上应该算非常快了。
Kettle读取按行分割的文件相关推荐
- java切割文件_Java实现按行分割大文件
简介 工作的时候,需要将一个大的文本文件按行分割成几个小文件.本来懒得写,想网上copy一下得了,但是 gLoLdchFGpoogle 了一遍,找了几个代码写的有点乱,尝试了之后发现效率太慢了,一个 ...
- Java按行分割大文件
简介 工作的时候,需要将一个大的文本文件按行分割成几个小文件.本来懒得写,想网上copy一下得了,但是 google 了一遍,找了几个代码写的有点乱,尝试了之后发现效率太慢了,一个 1000000 行 ...
- pandas使用read_csv函数读取文件的前N行数据并保留表头、pandas使用read_csv函数读取制表符分割的文件(tab-delimited)、自定义设置sep参数
pandas使用read_csv函数读取文件的前N行数据并保留表头.pandas使用read_csv函数读取制表符分割的文件(tab-delimited).自定义设置sep参数 目录
- python读取行、分割、存储_Pytables / Pandas:组合(读取?)按行分割的多个HDF5存储...
在"一次编写,多次读取"工作流程中,我经常使用FastExport实用程序解析从Teradata转储的大型文本文件(20GB-60GB),并使用Pandas将它们加载到Pytabl ...
- python一千行入门代码-Python – 一次从文件中读取1000行
我查了 this, this和 this. 第三个链接似乎有答案,但它没有完成这项工作. 我无法找到将整个文件带到主内存的解决方案,因为我将使用的文件非常大.所以我决定使用islice,如第3个链接所 ...
- Python3实现从txt文件中读取指定行的方法
Python3实现从txt文件中读取指定行的方法 本文实例讲述了Python3实现从文件中读取指定行的方法.分享给大家供大家参考.具体实现方法如下: def getline(the_file_path ...
- Java按行分割文件
方式一 : /*** 按行分割文件* @param sourceFilePath 为源文件路径* @param targetDirectoryPath 文件分割后存放的目标目录* @param row ...
- php 输出tab_php实现读取和写入tab分割的文件
本文实例讲述了php实现读取和写入tab分割的文件.分享给大家供大家参考.具体分析如下: 这段php代码实现读取和写入tab分割的文件,包含两个独立的函数,一个读,一个写,例如cvs文件等 // // ...
- c语言从文件删除指定行,C++操作文件行(读取,删除,修改指定行)
/******************************************************** Copyright (C), 2016-2018, FileName:main Au ...
最新文章
- Struts2 验证规则配置文件
- 【spring】第二个springmvc helloworld 以及 spring模糊路径
- 我的Android进阶之旅------Android关于TextWatcher的初步了解
- 爆气球这道题目,展开了新的思路
- iOS数据持久化--归档
- Jquery真的不难~第五回 JQ中的遍历(遍历中的性能知识点)
- win10笔记本电脑桌面发蓝、呈现负片的颜色,以及键盘中个别键失灵
- 关于linux的root用户密码忘记处理成绩
- iOS-Runtime知识点整理
- 33种编程语言为您送上祝福,新年快乐!
- Django JWT认证实现
- Django,Celery, rabbitmq
- 用户如何设置浏览器主页的历史记录和管理加载项
- Binding.scala使用教程8--binding.scala结合semanticUI
- 批处理之for用法大全
- 基于.net开发chrome核心浏览器
- 优麒麟搜狗输入法简繁切换
- Revel模板引擎Template基本语法
- MFC对话框美化四(自绘标题栏)
- [易飞]关于自制件调整为虚设件的处理方案