如何在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執行。需將
編譯命令如下所示:
[[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解析SDcard中的Json檔案
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 讀取assets中的Json檔案
//檔名稱 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