Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在scala变量中存储Spark数据帧值_Scala_Apache Spark_Apache Spark Sql - Fatal编程技术网

在scala变量中存储Spark数据帧值

在scala变量中存储Spark数据帧值,scala,apache-spark,apache-spark-sql,Scala,Apache Spark,Apache Spark Sql,我需要检查表中的重复文件名,如果文件计数为0,则需要使用sparkSql在表中加载文件。我写了下面的代码 val s2=s1.count //not working always giving 1 val s2=s1.head.count() // error: value count is not a member of org.apache.spark.sql.Row val s2=s1.size //value size is not a member of U

我需要检查表中的重复文件名,如果文件计数为0,则需要使用
sparkSql
在表中加载文件。我写了下面的代码

    val s2=s1.count   //not working always giving 1
    val s2=s1.head.count() // error: value count is not a member of org.apache.spark.sql.Row
    val s2=s1.size //value size is not a member of Unit
    if(s1>0){ //code } //value > is not a member of org.apache.spark.sql.DataFrame
val s1=spark.sql(“从mytable中选择count(filename),其中filename='myfile.csv')//给出'2'
s1:org.apache.spark.sql.DataFrame=[count(文件名):bigint]
s1.show//将2作为输出
//s1给了我表中的文件计数,然后我需要使用if语句比较这个计数值。 我正在使用下面的代码

    val s2=s1.count   //not working always giving 1
    val s2=s1.head.count() // error: value count is not a member of org.apache.spark.sql.Row
    val s2=s1.size //value size is not a member of Unit
    if(s1>0){ //code } //value > is not a member of org.apache.spark.sql.DataFrame
有人能给我一个提示我应该怎么做。我怎么才能得到数据帧的值,并可以用它作为变量来检查条件。 i、 e


您需要提取值本身。Count将返回df中的行数,这只是一行

因此,您可以使用first和getInt方法保留原始查询并在查询后提取值

val s1=spark.sql(“从mytable中选择count(filename),其中filename='myfile.csv'”)`
val valueToCompare=s1.first().getInt(0)
然后:

  if(valueToCompare>0){
    //my code
    }
另一个选项是在查询之外执行计数,然后计数将为您提供所需的值:

val s1 = spark.sql("select filename from mytable where filename='myfile.csv'")


   if(s1.count>0){
    //my code
    }

我最喜欢第二个选项,但没有其他原因,我认为更清楚的是,您需要提取值本身。Count将返回df中的行数,这只是一行

因此,您可以使用first和getInt方法保留原始查询并在查询后提取值

val s1=spark.sql(“从mytable中选择count(filename),其中filename='myfile.csv'”)`
val valueToCompare=s1.first().getInt(0)
然后:

  if(valueToCompare>0){
    //my code
    }
另一个选项是在查询之外执行计数,然后计数将为您提供所需的值:

val s1 = spark.sql("select filename from mytable where filename='myfile.csv'")


   if(s1.count>0){
    //my code
    }
我最喜欢第二个选项,但没有其他原因,我认为它更清楚

spark.sql(“从mytable中选择count(filename),其中filename='myfile.csv'”)
返回一个数据帧,您需要提取该行的第一行和第一列。直接过滤数据集并计算Scala中的行数要简单得多:

val s1 = df.filter($"filename" === "myfile.csv").count
if (s1 > 0) {
  ...
}
其中,
df
是与
mytable
表相对应的数据集

如果您不是通过注册视图而从其他来源获得表,请使用
SparkSession.table()
使用您已有的
SparkSession
实例获取数据帧。例如,在Spark shell中,预设变量
Spark
保存会话,您将执行以下操作:

val df = spark.table("mytable")
val s1 = df.filter($"filename" === "myfile.csv").count
spark.sql(“从mytable中选择count(filename),其中filename='myfile.csv'”)
返回一个数据帧,您需要提取该行的第一行和第一列。直接过滤数据集并计算Scala中的行数要简单得多:

val s1 = df.filter($"filename" === "myfile.csv").count
if (s1 > 0) {
  ...
}
其中,
df
是与
mytable
表相对应的数据集

如果您不是通过注册视图而从其他来源获得表,请使用
SparkSession.table()
使用您已有的
SparkSession
实例获取数据帧。例如,在Spark shell中,预设变量
Spark
保存会话,您将执行以下操作:

val df = spark.table("mytable")
val s1 = df.filter($"filename" === "myfile.csv").count

您可能应该再次阅读SQL中的聚合函数的功能以及数据帧上的
count
功能。您可能应该再次阅读SQL中的聚合函数的功能以及数据帧上的
count
功能。