1,直接进入pyspark进行命令行代码
a.首先查看pyspark的安装目录$SPARK_HOME
b.对于pyspark,打开文件的路径有两种,默认是从hdfs读取文件,也可以指定sc.textFile("路径").在路径前面加上hdfs://表示从hdfs文件系统上读本地文件读取 sc.textFile("路径").在路径前面加上</span>
file:// 表示从本地文件系统读,如file:///home/user/spark/README.md
words = sc.textFile("file:///home/input/2.txt")
看下words里面是什么:
words.collect(),而且它返回了一个列表
spark的map()是python里的lamd
def f(x):
a=x.split(' ')
b=a[8].split(':')
if(int(b[0])>5100):
print x
return x
words.map(f).collect()#调用f()函数,并且把结果进行展示
a=x.split(' ')
b=a[8].split(':')
if(int(b[0])>5100):
print x
return x
words.map(f).collect()#调用f()函数,并且把结果进行展示
2.另外一种方法是命令行调用py程序
$SPARK_HOME/bin/pyspark ./wordcount.py file:///home/bingtong/1.txt
这个程序是把结果打印到控制台的,为了不把INFO信息打印,可以设置如下:
Spark(和PySpark)的执行可以特别详细,很多INFO日志消息都会打印到屏幕。开发过程中,这些非常恼人,因为可能丢失Python栈跟踪或者print的输出。为了减少Spark输出 – 你可以设置$SPARK_HOME/conf下的log4j。首先,拷贝一份$SPARK_HOME/conf/log4j.properties.template文件,去掉“.template”扩展名。
1
|
~$ cp $SPARK_HOME
/
conf
/
log4j.properties.template $SPARK_HOME
/
conf
/
log4j.properties
|
编辑新文件,用WARN替换代码中出现的INFO。你的log4j.properties文件类似:
1
2
3
4
5
6
7
8
9
10
11
|
# Set everything to be logged to the console
log4j.rootCategory
=
WARN, console
log4j.appender.console
=
org.apache.log4j.ConsoleAppender
log4j.appender.console.target
=
System.err
log4j.appender.console.layout
=
org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern
=
%
d{yy
/
MM
/
dd HH:mm:ss}
%
p
%
c{
1
}:
%
m
%
n
# Settings to quiet third party logs that are too verbose
log4j.logger.org.eclipse.jetty
=
WARN
log4j.logger.org.eclipse.jetty.util.component.AbstractLifeCycle
=
ERROR
log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper
=
WARN
log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter
=
WARN
|