我正在运行一个spark应用程序,它从几个hive表(IP地址)读取数据,并将数据集中的每个元素(IP地址)与来自其他数据集的所有其他元素(IP地址)进行比较.最终结果将是这样的:
+---------------+--------+---------------+---------------+---------+----------+--------+----------+
| ip_address|dataset1|dataset2 |dataset3 |dataset4 |dataset5 |dataset6| date|
+---------------+--------+---------------+---------------+---------+----------+--------+----------+
| xx.xx.xx.xx.xx| 1 | 1| 0| 0| 0| 0 |2017-11-06|
| xx.xx.xx.xx.xx| 0 | 0| 1| 0| 0| 1 |2017-11-06|
| xx.xx.xx.xx.xx| 1 | 0| 0| 0| 0| 1 |2017-11-06|
| xx.xx.xx.xx.xx| 0 | 0| 1| 0| 0| 1 |2017-11-06|
| xx.xx.xx.xx.xx| 1 | 1| 0| 1| 0| 0 |2017-11-06|
---------------------------------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
为了进行比较,我将语句的dataframes结果转换hiveContext.sql("query")为Fastutil对象.像这样:
val df= hiveContext.sql("query")
val dfBuffer = new it.unimi.dsi.fastutil.objects.ObjectArrayList[String](df.map(r => r(0).toString).collect())
Run Code Online (Sandbox Code Playgroud)
然后,我使用一个iterator …
我正在尝试使用 DMS 将数据从 oracle 实例移动到 postgres RDS。我仅执行完整加载操作,并且已禁用目标上的所有外键。我还确保同一表的列之间的数据类型不会不匹配。我在目标表准备模式下尝试了“不执行任何操作”和“截断”,当我运行该任务时,多个表失败并显示以下错误消息:
[TARGET_LOAD ]E: Command failed to load data with exit error code 1, Command output: <truncated> [1020403] (csv_target.c:981)
[TARGET_LOAD ]E: Failed to wait for previous run [1020403] (csv_target.c:1578)
[TARGET_LOAD ]E: Failed to load data from csv file. [1020403] (odbc_endpoint_imp.c:5648)
[TARGET_LOAD ]E: Handling End of table 'public'.'SKEWED_VALUES' loading failed by subtask 6 thread 1 [1020403] (endpointshell.c:2416)
Run Code Online (Sandbox Code Playgroud)
DMS 没有给出正确的错误信息,我无法理解上述错误消息的含义。
当我使用“在目标上删除表”作为目标表准备模式时,它可以工作,但它以我不想要的不同方式创建列的数据类型。
任何帮助,将不胜感激。
oracle postgresql database-migration amazon-web-services aws-dms
我试图确保数据框中的特定列不包含任何非法值(非数字数据)。为此,我尝试使用正则表达式匹配rlike来收集数据中的非法值:
我需要使用字符串字符或空格或逗号或任何其他与数字不同的字符来收集值。我试过:
spark.sql("select * from tabl where UPC not rlike '[0-9]*'").show()
Run Code Online (Sandbox Code Playgroud)
但这不起作用。它产生 0 行。
任何帮助表示赞赏。谢谢你。
我是新手来激发SQL和Dataframes.我有一个Dataframe我应该根据其他列的值添加新列.我有一个Nested IFexcel 的公式,我应该实现(用于向新列添加值),在转换为程序化术语时,它是这样的:
if(k =='yes')
{
if(!(i==''))
{
if(diff(max_date, target_date) < 0)
{
if(j == '')
{
"pending" //the value of the column
}
else {
"approved" //the value of the column
}
}
else{
"expired" //the value of the column
}
}
else{
"" //the value should be empty
}
}
else{
"" //the value should be empty
}
Run Code Online (Sandbox Code Playgroud)
i,j,k are three other columns in the Dataframe.我知道我们可以使用withColumn和when添加基于其他列的新列,但我不确定如何使用该方法实现上述逻辑.
在添加新列时实现上述逻辑的简单/有效方法是什么?任何帮助,将不胜感激.
谢谢.
scala dataframe apache-spark apache-spark-sql spark-dataframe
我正在将Excel工作表读入DataframeSpark 2.0中,然后尝试将具有日期值的某些列MM/DD/YY转换为YYYY-MM-DDformat格式。值是字符串格式。下面是示例:
+---------------+--------------+
|modified | created |
+---------------+--------------+
| null| 12/4/17 13:45|
| 2/20/18| 2/2/18 20:50|
| 3/20/18| 2/2/18 21:10|
| 2/20/18| 2/2/18 21:23|
| 2/28/18|12/12/17 15:42|
| 1/25/18| 11/9/17 13:10|
| 1/29/18| 12/6/17 10:07|
+---------------+--------------+
Run Code Online (Sandbox Code Playgroud)
我希望将其转换为:
+---------------+-----------------+
|modified | created |
+---------------+-----------------+
| null| 2017-12-04 13:45|
| 2018-02-20| 2018-02-02 20:50|
| 2018-03-20| 2018-02-02 21:10|
| 2018-02-20| 2018-02-02 21:23|
| 2018-02-28| 2017-12-12 15:42|
| 2018-01-25| 2017-11-09 13:10|
| 2018-01-29| 2017-12-06 10:07|
+---------------+-----------------+ …Run Code Online (Sandbox Code Playgroud) apache-spark ×4
dataframe ×3
scala ×3
aws-dms ×1
fastutil ×1
oracle ×1
postgresql ×1
pyspark ×1
regex ×1