Spark将DataFrame数据sftp到指定机器(scala)
Posted 羲凡丞相
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark将DataFrame数据sftp到指定机器(scala)相关的知识,希望对你有一定的参考价值。
@羲凡——只为了更好的活着
Spark将DataFrame数据sftp到指定机器(scala)
将处理完的数据sftp到指定的机器上,供下一个服务调用。博主使用spark2.3.2和hadoop2.7.3。直接先上代码
package aarontest
import org.apache.spark.sql.DataFrame, SaveMode, SparkSession
object SparkSftpDemo
def main(args: Array[String]): Unit =
val spark = SparkSession.builder()
.appName("CapCollisionQuerier")
.master("local[*]")// 将此行注释掉,打jar包,放在linux上即可执行
.enableHiveSupport()
.getOrCreate()
val host=args(0) //远程机器的ip
val username=args(1) //登录远程机器的用户名
val password=args(2) //登录远程机器的密码
val outputFile =args(3) //远程机器存放文件的路径
val df: DataFrame = spark.sql("select * from aarontest.t1 limit 10")
df.write
.format("com.springml.spark.sftp") //一定要加
.option("host",host)
.option("username",username)
.option("password",password)
.option("header",true) //如果将df列名一同写出到文件中,此项设置为true
.option("fileType", "csv") //如果将df列名一同写出到文件中,此项设置为csv,不能为txt
.mode(SaveMode.Overwrite)
.save(outputFile)
spark.stop()
pom.xml文件中要添加
<dependency>
<groupId>com.springml</groupId>
<artifactId>spark-sftp_2.11</artifactId>
<version>1.1.3</version>
</dependency>
在用 spark-submit提交的时候一定要加载三个jar包 spark-sftp_2.11-1.1.3.jar 和 sftp.client-1.0.3.jar 以及 jsch-0.1.53.jar。加载jar包的方式很多,只要在spark任务运行时能读取到这三个jar包即可。下面使用 –jars 的方式演示
#!/bin/sh
/usr/local/package/spark-2.3.2-bin-hadoop2.7/bin/spark-submit \\
--master yarn \\
--deploy-mode cluster \\
--class aarontest.SparkSftpDemo \\
--jars hdfs://ns/lib/spark-sftp_2.11-1.1.3.jar,hdfs://ns/lib/sftp.client-1.0.3.jar,hdfs://ns/lib/jsch-0.1.53.jar \\
hdfs://ns/jars/SparkSftpDemo.jar $1 $2 $3 $4
====================================================================
@羲凡——只为了更好的活着
若对博客中有任何问题,欢迎留言交流
以上是关于Spark将DataFrame数据sftp到指定机器(scala)的主要内容,如果未能解决你的问题,请参考以下文章
从 Spark 服务器执行 SFTP 时,大型机服务器上的记录级别数据截断
Spark Dataframe - 将特定行推到数据框中的最后一个
将 CSV 数据加载到 Dataframe 并使用 Apache Spark (Java) 转换为 Array