1. 程式人生 > >如何在Hadoop的MapReduce程式中處理JSON檔案

如何在Hadoop的MapReduce程式中處理JSON檔案


簡介:

最近在寫MapReduce程式處理日誌時,需要解析JSON配置檔案,簡化Java程式和處理邏輯。但是Hadoop本身似乎沒有內建對JSON檔案的解析功能,我們不得不求助於第三方JSON工具包。這裡選擇json-simple實現我們的功能。

在Hadoop上執行Java程式的命令如下所示:

[[email protected]]$ hadoop jar my-mapreduce.jar

my-mapreduce.jar是我們進行日誌處理的MapReduce程式。現在假定我們需要在其中處理JSON格式的配置檔案,這裡忽略如何在Hadoop叢集讀取檔案的細節,只關注如何使用JSON工具包。下面是簡單的HelloWorld程式:

import org.json.simple.JSONObject;
public class HelloWorld{
    public static void main(String[] args){
        JSONObject obj=new JSONObject();
        obj.put("name","foo");
        obj.put("num",new Integer(100));
        obj.put("balance",new Double(1000.21));
        obj.put("is_vip",new Boolean(true));
        obj.put("nickname",null);
        System.out.print(obj);
    }
}

在HelloWorld程式中,只簡單修改JSON物件,將其內容列印輸出,從而驗證解析修改JSON內容的過程。

編譯:

由於MapReduce程式需提交到Hadoop叢集執行,所以HelloWorld依賴的json-simple包必須存在於叢集的classpath路徑中,如果叢集上沒有對應的jar包。執行HelloWorld會出現如下異常:
Exception in thread "main" java.lang.NoClassDefFoundError: org/json/simple/JSONObject

簡單的解決方法是將json-simple包直接和HelloWorld編譯結果一起打包,然後即可使用命令hadoop jar HelloWorld.jar執行。需將
json-simple
的jar包解壓再同HelloWorld打包。

編譯命令如下所示:
[[email protected]]$ jar tf json-simple-1.1.1.jar
META-INF/MANIFEST.MF
META-INF/
META-INF/maven/
META-INF/maven/com.googlecode.json-simple/
META-INF/maven/com.googlecode.json-simple/json-simple/
META-INF/maven/com.googlecode.json-simple/json-simple/pom.properties
META-INF/maven/com.googlecode.json-simple/json-simple/pom.xml
org/
org/json/
org/json/simple/
org/json/simple/ItemList.class
org/json/simple/JSONArray.class
org/json/simple/JSONAware.class
org/json/simple/JSONObject.class
org/json/simple/JSONStreamAware.class
org/json/simple/JSONValue.class
org/json/simple/parser/
org/json/simple/parser/ContainerFactory.class
org/json/simple/parser/ContentHandler.class
org/json/simple/parser/JSONParser.class
org/json/simple/parser/ParseException.class
org/json/simple/parser/Yylex.class
org/json/simple/parser/Yytoken.class

[[email protected]]$ unzip json-simple-1.1.1.jar
[[email protected]]$ javac -classpath ./json-simple-1.1.1.jar HelloWorld.java
[[email protected]]$ jar -cfe HelloWorld.jar HelloWorld  HelloWorld.class ./org/

執行HelloWorld

[[email protected]]$ hadoop jar HelloWorld.jar
{"balance":1000.21,"num":100,"nickname":null,"is_vip":true,"name":"foo"}

相關推薦

如何在Hadoop的MapReduce程式處理JSON檔案

簡介: 最近在寫MapReduce程式處理日誌時,需要解析JSON配置檔案,簡化Java程式和處理邏輯。但是Hadoop本身似乎沒有內建對JSON檔案的解析功能,我們不得不求助於第三方JSON工具包。這裡選擇json-simple實現我們的功能。 在Hadoop上執行Jav

微信小程式-處理json資料 (從json資料提取想要的值 將變數json字串轉成json物件)

1、新增依賴 <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>jso

Jmeter處理json

-s 插件 信息 麻煩 目錄 分析 log nim highlight 我們在做http接口測試的時候,返回的數據都是json串,Jmeter中本身是不支持直接處理json串的,如果要獲取到返回結果中指定的值,必須要要通過正則表達式來獲取到,正則表達式比較麻煩,寫錯了就獲

python處理json文件的方法函數

對齊 ensure 多少 lse mps %s 中文 ron 字典類 1、json.loads() 將json字符串,轉變為python中的“字典”類型 import json #json串是一個字符串f = open(‘product.js

接口測試學習——Jmeter處理json

inf 使用 分析 spa 不用 不能 添加 www. 返回 我們在做http接口測試的時候,返回的數據都是json串,Jmeter中本身是不支持直接處理json串的,如果要獲取到返回結果中指定的值,必須要要通過正則表達式來獲取到,正則表達式比較麻煩,寫錯了就獲取不到值了,

C#處理Json檔案

   JSON(全稱為JavaScript Object Notation) 是一種輕量級的資料交換格式。它是基於JavaScript語法標準的一個子集。 JSON採用完全獨立於語言的文字格式,可以很容易在各種網路、平臺和程式之間傳輸。JSON的語法很簡單,易於人閱讀和編寫,同時也易於機器

程式學習--app.json檔案的介紹

app>json是小程式一個專案很重要的檔案,全域性的配置都在裡面,是不可或缺的,包括了小程式的所有頁面路徑、介面表現、網路超時時間、底部 tab 等. 現在看下我的程式碼  基本上開發小程式會用的模組配置都在裡面,讀者只需要複製之後,進行自己想要的修改: 需要注意的是

簡單使用Gson解析SDcardJson檔案

File file = new File(Environment.getExternalStorageDirectory(),"news.json"); try { FileInputStream fileInputStream = new FileInputStream(file

vscode讀取json檔案settings.json

讀取檔案的內容: 讀取檔案的方法: var settingsPath = process.env.AppData + "\\Code\\User\\settings.json"; var allConfigJson = JSON.parse(fs.readFileSync(set

Linux Shell環境下用jq命令處理json檔案

安裝 CentOS下可以直接通過yum安裝: yum install jq -y 使用方法 假設有一個名為test.json的檔案,內容如下: { "Summary": { "Version": "1.0", "Comment

js處理json Json物件與Json字串的轉化、JSON字串與Java物件的轉換

轉:https://www.cnblogs.com/zq-boke/p/5833387.html Json物件與Json字串的轉化、JSON字串與Java物件的轉換   一.Json物件與Json字串的轉化 1.jQuery外掛支援的轉換方式:   $.pars

Android 讀取assetsJson檔案

//檔名稱 private final static String fileName = "regison.json"; class DataThread extends Thread { @Override public void run() {

python 處理json檔案

# -*- coding: utf-8 -*- """處理json Usage: netCheck <JSONFILE> <SAVEFILE> """ from docopt import docopt import json def deal_jso

java處理Json

package webdemo; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import do

在JavaScript處理JSON資料 jquery js 定義 json 格式

  1.JSON(JavaScript Object Notation)一種簡單的資料格式,比xml更輕巧。JSON是JavaScript原生格式,這意味著在JavaScript中處理JSON資料不需要任何特殊的API或工具包。 JSON的規則很簡單:物件是一個無序的“‘名稱:值'對”集合

flutter讀取專案json檔案資料

前言 網上有很多讀取的,但對於小白的我來說(剛接觸flutter一週,dart完全不懂),從專案中讀取 xxx.json檔案,並將檔案中的json內容轉換為string物件是困難的,話不多說直接上程式碼 環境準備 由於我是在自己專案中實現的,有環境,及依賴需要引入,就全部都貼出來

android studio存放json檔案,獲取assets檔案下下檔案,獲取本地json檔案並解析

轉自http://blog.csdn.net/yanxiaosa/article/details/70859927 以前看過這些知識,今天用到的時候,發現自己忘記了,都不知道assets資料夾在哪個目錄下。百度了一下,assets目錄和java目錄是同一個級別的。  我

編寫windows程式的“.def”檔案

    在孫鑫老師的VC視訊第19講有提到,定義一個動態連結庫的“共享節”,需要在工程中手動新增一個“.def”檔案,然後在這個檔案中定義一個共享節,.def中的語句如下: SEGMENTS mysec READ WRITE SHARED               //

Python指令碼批處理JSON檔案,去除製表符、空格、回車等多餘符號

root_dir_path = "E:\popstar3\Popstar3_3.x_0_small\Resources\ui" extern_name_list = [".json", ".ExportJson"] import os import

jQuery讀取json檔案

json檔案是一種輕量級的資料互動格式。一般在jquery中使用getJSON()方法讀取。 $.getJSON(url,[data],[callback]) url:載入的頁面地址 data: 可選項,傳送到伺服器的資料,格式是key/value ca