0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

json Lines形式への変換

Posted at

json Lines形式とは

複数のjson形式のオブジェクトを1行ずつ書き込んだ(フラット化)テキストファイルのフォーマット

  • json Lines形式(フラット化)
{"name": "Sato", "age": 20, "city": "New York"}
  • json 形式
{
  "name": "Sato", 
  "age": 20, 
  "city": "New York"
}

json Lines形式の調査をした理由

json形式のビックデータをAWS Glueデータカタログに取り込む際に、AWS Athenaでデータの読み込み時にエラーとなり、json形式からjson Lines形式へ変換しなければならない事象が発生したため、変換方法を調査した。
※Glueデータカタログについて、json形式で読み込めない場合、json Lines形式への変換を考えると良い

変換方法

  • jqコマンドの場合、-cオプションを利用
$ cat test1.json | jq
{
  "name": "Sato",
  "age": 20,
  "city": "New York"
}
$ cat test1.json | jq -c .
{"name":"Sato","age":20,"city":"New York"}
  • LambdaやGlueジョブの場合、jsonライブラリのdumpsを利用
import json

data = {
    "name": "Sato",
    "age": 20,
    "city": "New York",
}

json_lines = json.dumps(data)

print(json_lines)
# 出力結果
# {"name": "Sato", "age": 20, "city": "New York"}

json形式のデータをGlueデータカタログ上で管理するために

S3へ格納されるデータがjson形式である場合、定期的にjson Lines形式へ変換するための実装を構築することで、正常にデータを読み込むことができた。
定期的な処理はLambdaやGlueジョブ(Python Shell)を利用することで実現できるため、参考にしていただけると嬉しいです!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?