我刚接触Hive和spark sql技术,我曾经尝试过spark sql中的limit子句。但它只支持从零开始到特定limit.But的特定限制,我想检索从特定起始点到特定结束点的行,您可以建议一种方法来实现这一点。
Query1 :: SELECT * FROM `Emp` LIMIT 10; - this query supports in both sql and spark sql
但
Query2 :: SELECT * FROM `Emp` LIMIT 10,20; - to retrive rows from 10 to 20 supports in sql, but not
当我提交复杂的join SQL查询时,通常会给一个或2个操作数更短的名称来澄清我的意图,例如,以下两个查询:
SELECT *
FROM transactions
JOIN accounts ON transactions.cardnumber=accounts.cardnumber
和
SELECT *
FROM transactions AS left
JOIN accounts ON left.cardnumber=accounts.cardnumber
应该有同样的效果。
我已经在Spark1.6.3中测试了这两种查询,而且这两种查询都能工作。但是,在我移到Spark2.2.1之后,第
当行中的某些列值与Source表中的相同列值匹配时,我希望更新databricks中的目标Delta表。
问题是当源表中有多个行与目标Delta表中的一行匹配时。
在这种情况下,源表中两个或两个以上行的主键与delta表中的一行主键匹配。我试图复制以下场景:
sql="""
MERGE INTO """ + targetTable + """ TGT USING """ + tempView + """ SRC ON TGT.id = SRC.id and T
我正在尝试使用pyspark将数据从每天的批处理发送到Kafka主题,但目前我收到了以下错误:
文件跟踪(最近一次调用):文件"",第5行,文件"/usr/local/rms/lib/hdp26_c5000/spark2/python/pyspark/sql/readwriter.py",第548行,保存self._jwrite.save()文件"/usr/local/rms/lib/hdp26_c5000/spark2/python/lib/py4j-0.10.4-src.zip/py4j/java_gateway.py",第1133行,在 c
当我从s3桶将数据加载到pyspark中时,进行一些操作(连接、联合),然后尝试覆盖前面读取的相同路径(' data /csv/')。我得到了一个错误:
py4j.protocol.Py4JJavaError: An error occurred while calling o4635.save.
: org.apache.spark.SparkException: Job aborted.
at org.apache.spark.sql.execution.datasources.FileFormatWriter$.write(FileFormatWriter.sca
与一样,SparkSQL抱怨标量子查询。
因此,当不能通过查看SQL语句(不查看数据)就能100%确定子查询只返回一行时,就会抛出这个异常。如果您确信您的子查询只给出一行,那么您可以使用下列聚合标准函数之一,因此Spark很高兴:
firstavgmaxmin
如何使下面的SQL查询工作?
SELECT
prerequisite AS prerequisite,
(SELECT e.description FROM course e WHERE e.course_no = c.prerequisite) as course_name,
COUNT(*) as cnt
我有一个表,在一个数据库中。有一列" id“,并且每个id都有多行。我想随机挑选10个I,然后用这些I加载所有行。下面的代码是有效的,并给出了一个包含10个随机ids的表。这很好。 distinct_ids = spark.sql(f""" (SELECT DISTINCT id FROM {database_name}.{orig_table_cl_name} ORDER BY RAND() LIMIT 10) 但是现在我不知道如何对原始表进行内连接,以获得包含正确I的所有数据……我试过了: distinct_ids = spark.sql(
f"
首先,我构建了scala应用程序,使用这一行代码从apache中的mysql表中读取数据。
val spark = SparkSession.builder().master("local").appName("Fuzzy Match Analysis").config("spark.sql.warehouse.dir","file:///tmp/spark-warehouse").getOrCreate()
import spark.implicits._
var df = spark.read.format("jdbc
我运行了一个简单的Spark程序来获取数据从Hive到session使用spark。
scala> spark.sql("select count(1) from firsthivestreamtable").show(100,false)
+--------+
|count(1)|
+--------+
|36 |
+--------+
运行insert语句在Hive表中插入9条新记录(直接在Hive控制台上)。验证Hive表有正确插入的其他行。
hive> select count(1) aa from firsthivestreamtable;
To
在执行看似简单的火花sql筛选工作时,我得到了一个例外:
someOtherDF
.filter(/*somecondition*/)
.select($"eventId")
.createOrReplaceTempView("myTempTable")
records
.filter(s"eventId NOT IN (SELECT eventId FROM myTempTable)")
知道我怎么解决这个问题吗?
注意:
someOtherDF包含过滤后的~1M到5M行,e
在我们的一个Pyspark作业中,我们有一个场景,我们在一个大的数据帧和相对较小的数据帧之间进行连接,我相信spark正在使用广播连接,我们遇到了以下错误 org.apache.spark.SparkException: Cannot broadcast the table that is larger than 8GB: 8 GB
at org.apache.spark.sql.execution.exchange.BroadcastExchangeExec$$anonfun$relationFuture$1$$anonfun$apply$1.apply(BroadcastExch
我正在尝试使用SparkSession从hive表创建数据帧,如下所示。创建后,我将通过Ids列表来筛选行。
val myDF = spark.sql("select * from myhivetable")
val someDF = mfiDF.where(mfiDF("id").isin(myList:_*))
有没有一种方法可以查询配置单元表,如下所示:
val myDF = spark.sql("select * from myhivetable").where (("id").isin(myList:_*))
当我尝试
我认为这个问题类似于其他一些问题,但它没有被问到。
在Spark中,我们如何在删除重复列的情况下运行SQL查询?
例如,在spark上运行的SQL查询
select a.* from a
left outer join
select b.* from b
on a.id = b.id
在这种情况下,如何删除重复的列b.id?
我知道我们可以在Spark中使用其他步骤,比如提供遗憾或重命名列,但是有没有一种更快的方法来简单地通过编写SQL查询来删除重复的列?
我需要将一个带有string列的dataframe连接到一个字符串数组中,这样如果数组中的值匹配,行就会连接起来。
我试过了,但我想这不是支持。还有别的办法吗?
import org.apache.spark.SparkConf
import org.apache.spark.sql.SparkSession
val sparkConf = new SparkConf().setMaster("local[*]").setAppName("test")
val spark = SparkSession.builder().config(sparkConf).g
自从上次使用spark太久了,我再次使用Spark3.1,下面是我的问题:我还有2000万行加入400米行,原始代码是:
times= [50000,20000,10000,1000]
for time in times:
join = (df_a.join(df_b,
[
df_a["a"] == df_b["a"],
(unix_times
我是Spark的新手,需要使用PySpark或Spark Sql将以下输入数据帧转置为所需的输出df (从行到列)的帮助。
输入数据帧-
A B C D
1 2 3 4
10 11 12 13
......
........
所需的输出(转置)数据
A 1
B 2
C 3
D 4
A 11
B 12
C 13
D 14
....
......
如果我可以根据我们的要求旋转输入数据(列),那就更好了。
当我在Databricks/PySpark中运行查询时,我得到以下错误:
org.apache.spark.SparkException: Could not execute broadcast in 300 secs. You can increase the timeout for broadcasts via spark.sql.broadcastTimeout or disable broadcast join by setting spark.sql.autoBroadcastJoinThreshold to -1
如何在Databricks notebook中以编程方式(Pytho
我正在尝试从spark-sql中的SQL语句中获取Integer。
var num_en = ctx.sql("SELECT count(*) FROM table WHERE lang = 'en'")
num = num_en.collect()(0)
num_en是一个SchemaRDD,根据我得到的错误,num是一个“行”。
<console>:144: error: type mismatch;
found : org.apache.spark.sql.Row
(which expands to) org.apache.sp
我有一个dataframe df和一个列名为setp的列来创建我编写的列表。 setp_list=df.select ('setp').distinct().collect()
setp_array=[row.setp for row in setp_list]
setp_array= str(setp_array)[1:-1] 我想在spark.sql语句中使用它 df1=spark.sql(f"select * from table where setp in ({setp_array})"). 我不确定如何显示列表以查看是如何创建的,但我主要希望将其包含