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读取按行分割的文件相关推荐

  1. java切割文件_Java实现按行分割大文件

    简介 工作的时候,需要将一个大的文本文件按行分割成几个小文件.本来懒得写,想网上copy一下得了,但是 gLoLdchFGpoogle 了一遍,找了几个代码写的有点乱,尝试了之后发现效率太慢了,一个 ...

  2. Java按行分割大文件

    简介 工作的时候,需要将一个大的文本文件按行分割成几个小文件.本来懒得写,想网上copy一下得了,但是 google 了一遍,找了几个代码写的有点乱,尝试了之后发现效率太慢了,一个 1000000 行 ...

  3. pandas使用read_csv函数读取文件的前N行数据并保留表头、pandas使用read_csv函数读取制表符分割的文件(tab-delimited)、自定义设置sep参数

    pandas使用read_csv函数读取文件的前N行数据并保留表头.pandas使用read_csv函数读取制表符分割的文件(tab-delimited).自定义设置sep参数 目录

  4. python读取行、分割、存储_Pytables / Pandas:组合(读取?)按行分割的多个HDF5存储...

    在"一次编写,多次读取"工作流程中,我经常使用FastExport实用程序解析从Teradata转储的大型文本文件(20GB-60GB),并使用Pandas将它们加载到Pytabl ...

  5. python一千行入门代码-Python – 一次从文件中读取1000行

    我查了 this, this和 this. 第三个链接似乎有答案,但它没有完成这项工作. 我无法找到将整个文件带到主内存的解决方案,因为我将使用的文件非常大.所以我决定使用islice,如第3个链接所 ...

  6. Python3实现从txt文件中读取指定行的方法

    Python3实现从txt文件中读取指定行的方法 本文实例讲述了Python3实现从文件中读取指定行的方法.分享给大家供大家参考.具体实现方法如下: def getline(the_file_path ...

  7. Java按行分割文件

    方式一 : /*** 按行分割文件* @param sourceFilePath 为源文件路径* @param targetDirectoryPath 文件分割后存放的目标目录* @param row ...

  8. php 输出tab_php实现读取和写入tab分割的文件

    本文实例讲述了php实现读取和写入tab分割的文件.分享给大家供大家参考.具体分析如下: 这段php代码实现读取和写入tab分割的文件,包含两个独立的函数,一个读,一个写,例如cvs文件等 // // ...

  9. c语言从文件删除指定行,C++操作文件行(读取,删除,修改指定行)

    /******************************************************** Copyright (C), 2016-2018, FileName:main Au ...

最新文章

  1. Struts2 验证规则配置文件
  2. 【spring】第二个springmvc helloworld 以及 spring模糊路径
  3. 我的Android进阶之旅------Android关于TextWatcher的初步了解
  4. 爆气球这道题目,展开了新的思路
  5. iOS数据持久化--归档
  6. Jquery真的不难~第五回 JQ中的遍历(遍历中的性能知识点)
  7. win10笔记本电脑桌面发蓝、呈现负片的颜色,以及键盘中个别键失灵
  8. 关于linux的root用户密码忘记处理成绩
  9. iOS-Runtime知识点整理
  10. 33种编程语言为您送上祝福,新年快乐!
  11. Django JWT认证实现
  12. Django,Celery, rabbitmq
  13. 用户如何设置浏览器主页的历史记录和管理加载项
  14. Binding.scala使用教程8--binding.scala结合semanticUI
  15. 批处理之for用法大全
  16. 基于.net开发chrome核心浏览器
  17. 优麒麟搜狗输入法简繁切换
  18. Revel模板引擎Template基本语法
  19. MFC对话框美化四(自绘标题栏)
  20. [易飞]关于自制件调整为虚设件的处理方案

热门文章

  1. 锐龙r7 5800x怎么样 相当于什么水平
  2. Git代码reset回滚无效解决
  3. 二维码(生成以及扫一扫)
  4. TransCad导入Excel中的OD矩阵和PA数据
  5. 雪球产品,场外雪球结构介绍
  6. python高端实现各国GDP动态轮换图
  7. TensorFlow RNN MNIST字符识别Demo快速了解TF RNN核心框架
  8. 关于order by的一些用法
  9. pta 计算机通信(并查集)
  10. 戴尔服务器r510怎么系统,DELLR510服务器上安系统.docx