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.jarsftp.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 - 将特定行推到数据框中的最后一个

DataFrame简介

将 CSV 数据加载到 Dataframe 并使用 Apache Spark (Java) 转换为 Array

Hive:Spark中如何实现将rdd结果插入到hive1.3.1表中

Spark DataFrame 空值到数据集