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
Apache spark 在spark sql中连接表时,是否有方法限制读取的数据?_Apache Spark_Apache Spark Sql - Fatal编程技术网

Apache spark 在spark sql中连接表时,是否有方法限制读取的数据?

Apache spark 在spark sql中连接表时,是否有方法限制读取的数据?,apache-spark,apache-spark-sql,Apache Spark,Apache Spark Sql,我想通过连接两个非常大的表来读取spark sql中的数据。但是我只需要一个来自结果数据帧的固定数字(比如500)。 比如说- SELECT id, name, employee.deptno, deptname FROM employee INNER JOIN department ON employee.deptno = department.deptno 在这里,我可以在结果数据帧上使用head(500)或limit(500)函数来限制结果数据帧中的行,但它仍将首先从两个表中读取完整数据

我想通过连接两个非常大的表来读取spark sql中的数据。但是我只需要一个来自结果数据帧的固定数字(比如500)。 比如说-

SELECT id, name, employee.deptno, deptname
FROM employee INNER JOIN department ON employee.deptno = department.deptno
在这里,我可以在结果数据帧上使用head(500)或limit(500)函数来限制结果数据帧中的行,但它仍将首先从两个表中读取完整数据,然后在结果数据帧上应用限制。 是否有一种方法可以避免在应用限制之前读取完整数据?

类似于以下内容:

employee = spark.sql('select id, name, deptno from employee limit 500')
department = spark.sql('select deptno, deptname from department limit 500')
employee = employee.join(department, on = 'deptno', how = 'inner')

您可以先使用单独的子查询限制每个表中的记录数,然后再联接。@ShreyJakhmola,但我不一定事先知道输入表。这可能是一个非常复杂的sql语句,它连接了许多表,这些表是按原样接收到的。现在,要提取加入的表,我必须提取所有表在该表中使用的内容,然后再次在该表上创建一个临时表,然后在其上运行查询,这将非常复杂。你的评论回答了你的问题。由于您无法限制基础表中的数据,而且您也无法知道您需要哪些数据,因此无法实现您想要做的事情。是的,这是正确的。我现在只做过这样的事。首先提取各个表,然后限制各个表上的数据,然后连接它们。最后,我只做了类似的事情。我想如果不先从sql中提取所有表,然后在有限的数据上连接它们,就没有其他方法可以做到这一点。