Spark-Avro學習9之SCALA環境下Avro使用(不生成code方式)
1.與上篇類似,只是程式碼改下:
package org.apache.spark.avro.learning import java.io.File import java.text.SimpleDateFormat import java.util.Date import org.apache.avro.Schema import org.apache.avro.file.DataFileReader import org.apache.avro.file.DataFileWriter import org.apache.avro.generic.GenericData import org.apache.avro.generic.GenericDatumReader import org.apache.avro.generic.GenericDatumWriter import org.apache.avro.generic.GenericRecord object AvroNoCode { def main(args: Array[String]): Unit = { val schema = new Schema.Parser().parse(new File( "file/data/avro/input/user.avsc")); val user1 = new GenericData.Record(schema); println(user1); user1.put("name", "Alyssa"); user1.put("favorite_number", 256); val user2 = new GenericData.Record(schema); user2.put("name", "Ben"); user2.put("favorite_number", 7); user2.put("favorite_color", "red"); println("create user:"); println(user1); println(user2); // Serialize user1 and user2 to disk val iString = new SimpleDateFormat("yyyyMMddHHmmssSSS") .format(new Date()); val file = new File("file/data/avro/output/users" + iString + ".avro"); val datumWriter = new GenericDatumWriter[GenericRecord] ( schema); val dataFileWriter = new DataFileWriter[GenericRecord] ( datumWriter); dataFileWriter.create(schema, file); dataFileWriter.append(user1); dataFileWriter.append(user2); dataFileWriter.close(); // Deserialize users from disk val datumReader = new GenericDatumReader[GenericRecord] ( schema); val dataFileReader = new DataFileReader[GenericRecord] ( file, datumReader); ; var user = null:GenericRecord; while (dataFileReader.hasNext()) { // Reuse user object by passing it to next(). This saves us from // allocating and garbage collecting many objects for files with // many items. user = dataFileReader.next(user); println(user); } println("end"); } }
2.執行結果:
{"name": null, "favorite_number": null, "favorite_color": null} create user: {"name": "Alyssa", "favorite_number": 256, "favorite_color": null} {"name": "Ben", "favorite_number": 7, "favorite_color": "red"} {"name": "Alyssa", "favorite_number": 256, "favorite_color": null} {"name": "Ben", "favorite_number": 7, "favorite_color": "red"} end
檔案:
Objavro.schema�{"type":"record","name":"User","namespace":"example.avro","fields":[{"name":"name","type":"string"},{"name":"favorite_number","type":["int","null"]},{"name":"favorite_color","type":["string","null"]}]}
相關推薦
Spark-Avro學習9之SCALA環境下Avro使用(不生成code方式)
1.與上篇類似,只是程式碼改下: package org.apache.spark.avro.learning import java.io.File import java.text.Simpl
學習DB2之Linux環境下下載
文件的 express linux環境 兩個 下載地址 lan linu size SM 一 下載前的註冊IBM地址:https://www-01.ibm.com/marketing/iwm/iwm/web/pick.do?source=swg-db2expressc&am
Mark : Spark-Avro學習1之使用SparkSQL讀取AVRO檔案
1.安裝:https://repo.maven.apache.org/maven2/com/databricks/spark-avro_2.10/2.0.1/ 匯入到Spark專案裡檔案:https://github.com/databricks/spark-avro/ra
Spark-Avro學習4之使用AvroWritePartitioned儲存AVRO檔案時進行劃分
1.主要是partition儲存avro檔案 2.程式碼: /** * @author xubo * @time 20160502 * ref https://github.com/datab
《新興實踐》學習筆記之走進新興設計實踐(目錄及主題梳理)
目錄 走近新興設計實踐 設計模型:展望未來的設計教育 為徹底的關聯性而設計:以“關聯性設計”應對危險、併發的依存現實 製造與行動之間:論關聯性的設計教育學 關係能被設計麼?設計方法在社會創新中的作用
win10環境下MySql(5.7.21版本)安裝過程出現安裝MySQL無法定位程式輸入點fesetround於動態連結庫
Mysql 安裝時報錯: 無法定位程式輸入點fesetround於動態連結庫MSVCR120.dll上 解決方法:下載 Microsoft Visual C++ 2013 Redistributable Package 安裝 http
Python學習筆記之遍歷目錄檔案(遞迴和walk())
python中遍歷指定目錄下所有的檔案和資料夾,包含多級目錄,有兩種方法,一種是通過遞迴思想去遍歷,另一種是os模組的walk()函式 要列出目錄結構 一.遞迴方法 #coding:utf-8 import os a
Android基礎學習筆記之-ListView進階用法(item圓角效果實現)
今天簡單用快取優化方式實現了listview的功能,下面讓我們實現一下上篇文章留下來的改進方案: 1).實現item佈局的圓角效果 2).對listview的item進行監聽
快速學習html、css的經典筆記(不看後悔偶)
Ø 行距:line-height 數字行距:p{font-size:12pt;line-height:2;}//12pt*2 單位行距:p{line-height:9pt;} 比例行距:p{font-size:10pt;line-height:140%;}//10pt*140% Ø 文字對齊
安卓 仿iOS實現圖片按下變色(不攔截事件實現)
先上圖 一張圖片實現按下變色。(關於鬆手後不會恢復的問題,設定點選事件就不會有這個問題了) 不得不說iOS在一些比安卓要方便很多,比如自帶這個變色的效果。 在網上搜索了一下,比如http://www.cnblogs.com/linjzong
ELK學習筆記之CentOS 7下ELK(6.2.4)++LogStash+Filebeat+Log4j日誌整合環境搭建
0x00 簡介 現在的公司由於絕大部分專案都採用分散式架構,很早就採用ELK了,只不過最近因為額外的工作需要,仔細的研究了分散式系統中,怎麼樣的日誌規範和架構才是合理和能夠有效提高問題排查效率的。 經過仔細的分析和研究,確定下面的架構應該是比較合理的之一(Filebeat也支援直
Linux下Nginx實現負載均衡 Nginx學習系列之搭建環境
關於在本地虛擬機器(VMware 14)下安裝Linux同時安裝Nginx,請參考Nginx學習系列之搭建環境 1、啟動Nginx 在Nginx安裝成功的前提下,啟動Nginx 已root模式登陸(許可權需要),接著找到Nginx的安裝目錄,啟動Nginx,並且指定Nginx啟動所需的配置檔案,該檔
Scala學習11之在eclipse下使用scalatest外掛對scala檔案進行測試
一下在scala project和maven project都能跑 1.使用eclipse來安裝外掛: 按照【2】進入【3】,【3】沒有打包成功,mvn clean package報錯了 按照【2
spring4.2.9 java專案環境下ioc原始碼分析 (九)——refresh之postProcessBeanFactory方法
postProcessBeanFactory後處理beanFactory。時機是在所有的beanDenifition載入完成之後,bean例項化之前執行。比如,在beanfactory載入完成所有的bean後,想修改其中某個bean的定義,或者對beanFactory做一些其
spring4.2.9 java專案環境下ioc原始碼分析(四)——refresh之obtainFreshBeanFactory方法(@2處理Resource、載入Document及解析前準備)
接上篇文章,上篇文章講到載入完返回Rescouce。先找到要解析的程式碼位置,在AbstractBeanDefinitionReader類的loadBeanDefinitions(String location, Set<Resource> actualResou
spring4.2.9 java專案環境下ioc原始碼分析(六)——refresh之obtainFreshBeanFactory方法(@4預設標籤bean,beans解析、最終註冊)
接上篇文章,解析了import和alias標籤,只是開胃菜比較簡單,下面介紹bean標籤的載入,也是預設名稱空間下解析的重點。protected void processBeanDefinition(Element ele, BeanDefinitionParserDeleg
spring4.2.9 java專案環境下ioc原始碼分析(五)——refresh之obtainFreshBeanFactory方法(@3預設標籤import,alias解析)
接上篇文章,到了具體解析的時候了,具體的分為兩種情況,一種是預設名稱空間的標籤<bean>;另一種是自定義名稱空間的標籤比如<context:xxx>,<tx:xxx>等。先看下預設的名稱空間的標籤解析。protected void par
spring4.2.9 java專案環境下ioc原始碼分析 (十四)——refresh之onRefresh方法
這個方法是空的。解釋是在特定的上下文中初始化特別的beans。可以看到其也是用於初始化的。看了StaticWebApplicationContext、AbstractRefreshableWebApplicationContext、GenericWebApplicationC
spring4.2.9 java專案環境下ioc原始碼分析(三)——refresh之obtainFreshBeanFactory方法(@1準備工作與載入Resource)
obtainFreshBeanFactory方法從字面的意思看獲取新的Bean工廠,實際上這是一個過程,一個載入Xml資源並解析,根據解析結果組裝BeanDefinitions,然後初始化BeanFactory的過程。在載入Xml檔案之前,spring還做了一些其他的工作,比
Spark中元件Mllib的學習9之ALS訓練的model來預測資料的準確率研究
1解釋 研究ALS的準確率 2.程式碼: package org.apache.spark.mllib.learning.recommend import java.text.SimpleDateFormat import java.util.D