Spark機器學習1·程式設計入門(scala/java/python)
Spark安裝目錄
/Users/erichan/Garden/spark-1.4.0-bin-hadoop2.6
- 基本測試
./bin/run-example org.apache.spark.examples.SparkPi
MASTER=local[20] ./bin/run-example org.apache.spark.examples.SparkPi
scala
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
/**
* A simple Spark app in Scala
*/
object ScalaApp {
def main(args: Array[String]) {
val sc = new SparkContext("local[2]", "First Spark App")
val data = sc.textFile("data/UserPurchaseHistory.csv")
.map(line => line.split(","))
.map(purchaseRecord => (purchaseRecord(0), purchaseRecord(1), purchaseRecord(2)))
val numPurchases = data.count()
val uniqueUsers = data.map { case (user, product, price) => user }.distinct().count()
val totalRevenue = data.map { case (user, product, price) => price.toDouble }.sum()
val productsByPopularity = data
.map { case (user, product, price) => (product, 1) }
.reduceByKey(_ + _)
.collect()
.sortBy(-_._2)
val mostPopular = productsByPopularity(0)
println("Total purchases: " + numPurchases)
println("Unique users: " + uniqueUsers)
println("Total revenue: " + totalRevenue)
println("Most popular product: %s with %d purchases".format(mostPopular._1, mostPopular._2))
sc.stop()
}
}
build.sbt
name := "scala-spark-app"
version := "1.0"
scalaVersion := "2.11.6"
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.4.0"
erichan:scala-spark-app/ $ sbt run
java 8
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.PairFunction;
import scala.Tuple2;
import java.util.List;
public class JavaApp {
public static void main(String[] args) {
JavaSparkContext sc = new JavaSparkContext("local[2]", "First Spark App");
JavaRDD<String[]> data = sc.textFile("data/UserPurchaseHistory.csv").map(s -> s.split(","));
long numPurchases = data.count();
long uniqueUsers = data.map(strings -> strings[0]).distinct().count();
double totalRevenue = data.mapToDouble(strings -> Double.parseDouble(strings[2])).sum();
List<Tuple2<String, Integer>> pairs = data.mapToPair(
new PairFunction<String[], String, Integer>() {
@Override
public Tuple2<String, Integer> call(String[] strings) throws Exception {
return new Tuple2(strings[1], 1);
}
}
).reduceByKey((i1, i2) -> i1 + i2).collect();
pairs.sort((o1, o2) -> -(o1._2() - o2._2()));
String mostPopular = pairs.get(0)._1();
int purchases = pairs.get(0)._2();
System.out.println("Total purchases: " + numPurchases);
System.out.println("Unique users: " + uniqueUsers);
System.out.println("Total revenue: " + totalRevenue);
System.out.println(String.format("Most popular product: %s with %d purchases", mostPopular, purchases));
sc.stop();
}
}
Maven pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>java-spark-app</groupId>
<artifactId>java-spark-app</artifactId>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>1.4.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
python
from pyspark import SparkContext
sc = SparkContext("local[2]", "First Spark App")
data = sc.textFile("data/UserPurchaseHistory.csv").map(lambda line: line.split(",")).map(lambda record: (record[0], record[1], record[2]))
numPurchases = data.count()
uniqueUsers = data.map(lambda record: record[0]).distinct().count()
totalRevenue = data.map(lambda record: float(record[2])).sum()
products = data.map(lambda record: (record[1], 1.0)).reduceByKey(lambda a, b: a + b).collect()
mostPopular = sorted(products, key=lambda x: x[1], reverse=True)[0]
print "Total purchases: %d" % numPurchases
print "Unique users: %d" % uniqueUsers
print "Total revenue: %2.2f" % totalRevenue
print "Most popular product: %s with %d purchases" % (mostPopular[0], mostPopular[1])
sc.stop()
cd /Users/erichan/Garden/spark-1.4.0-bin-hadoop2.6/bin
./spark-submit pythonapp.py
相關文章
- Python程式設計入門(1) (轉)Python程式設計
- Number 1 — 程式設計入門程式設計
- Pygame - Python 遊戲程式設計入門 class1GAMPython遊戲程式設計
- Python程式設計入門Python程式設計
- 機器學習1—入門機器學習
- JAVA NIO程式設計入門(二)Java程式設計
- JAVA NIO程式設計入門(一)Java程式設計
- JAVA NIO 程式設計入門(三)Java程式設計
- java Swing程式設計入門Java程式設計
- java入門之初讀___java程式設計思想Java程式設計
- Spark入門(Python版)SparkPython
- Python 非同步程式設計入門Python非同步程式設計
- Python程式設計入門(3) (轉)Python程式設計
- Python程式設計入門(4) (轉)Python程式設計
- Python程式設計入門(6) (轉)Python程式設計
- Python程式設計入門(7) (轉)Python程式設計
- Python程式設計入門(8) (轉)Python程式設計
- Spark SQL 程式設計API入門系列之Spark SQL的作用與使用方式SparkSQL程式設計API
- Java入門之基礎程式設計Java程式設計
- 好程式設計師Java培訓分享如何快速入門Java程式設計程式設計師Java
- Spark修煉之道(進階篇)——Spark入門到精通:第四節 Spark程式設計模型(一)Spark程式設計模型
- Spark修煉之道(進階篇)——Spark入門到精通:第五節 Spark程式設計模型(二)Spark程式設計模型
- Spark修煉之道(進階篇)——Spark入門到精通:第六節 Spark程式設計模型(三)Spark程式設計模型
- 來自Java程式設計師的Python新手入門小結Java程式設計師Python
- 好程式設計師大資料培訓分享spark之Scala程式設計師大資料Spark
- Scala 簡介 [摘自 Scala程式設計 ]程式設計
- [scala]函數語言程式設計思想入門函數程式設計
- Spark MLlib 入門學習筆記 - 程式設計環境配置Spark筆記程式設計
- scala 從入門到入門+
- python程式設計真的好學嗎?python入門Python程式設計
- 《Python程式設計:從入門到實踐》Python程式設計
- 《Python遊戲程式設計入門》7.4習題Python遊戲程式設計
- 【Python入門基礎】網路程式設計Python程式設計
- Socket程式設計入門(基於Java實現)程式設計Java
- Java多執行緒程式設計入門(轉)Java執行緒程式設計
- 入門程式碼程式設計程式設計
- Python快速程式設計入門課後程式題答案Python程式設計
- Scala 學習筆記(1)之入門篇筆記