在spark sql中是否有一个sql fucntion返回当前时间戳,例如在impala中NOW()是返回当前时间戳的函数在spark sql中有类似的吗?
谢谢
是否有任何性能的影响,当我在我的RDD使用collectAsMap代替rdd.collect().toMap的?
我有一个键值RDD,我要转换为HashMap类,据我所知收集()是没有效率的大型数据集,因为它运行在驱动程序我可以用collectAsMap而不是有任何的性能影响?
原版的:
val QuoteHashMap=QuoteRDD.collect().toMap
val QuoteRDDData=QuoteHashMap.values.toSeq
val QuoteRDDSet=sc.parallelize(QuoteRDDData.map(x => x.toString.replace("(","").replace(")","")))
QuoteRDDSet.saveAsTextFile(Quotepath)
Run Code Online (Sandbox Code Playgroud)
更改:
val QuoteHashMap=QuoteRDD.collectAsMap()
val QuoteRDDData=QuoteHashMap.values.toSeq
val QuoteRDDSet=sc.parallelize(QuoteRDDData.map(x => x.toString.replace("(","").replace(")","")))
QuoteRDDSet.saveAsTextFile(Quotepath)
Run Code Online (Sandbox Code Playgroud) 下面是我的spark sql脚本,它加载文件并在其上使用SQL,我想从sql查询中收集输出并将其写入文件,不知道如何能有人帮助.
//import classes for sql
import org.apache.spark.sql.SQLContext
import org.apache.spark.{SparkConf, SparkContext}
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
// createSchemaRDD is used to implicitly convert an RDD to a SchemaRDD.
import sqlContext.createSchemaRDD
//hdfs paths
val warehouse="hdfs://quickstart.cloudera/user/hive/warehouse/"
val customers_path=warehouse+"people/people.txt"
customers_path
//create rdd file called file
val file=sc.textFile(customers_path)
val schemaString="name age"
import org.apache.spark.sql._
val schema =
StructType(
schemaString.split(",").map(fieldName => StructField(fieldName, StringType, true)))
val rowRDD=file.map(_.split(",")).map(p => Row(p(0),p(1).trim))
val peopleSchemRDD=sqlContext.applySchema(rowRDD, schema)
// Register the SchemaRDD as a table.
peopleSchemRDD.registerTempTable("people")
// SQL statements can be run by …Run Code Online (Sandbox Code Playgroud)我想使用 Scala 从 Spark 中的 sql 查询中获取所有表名称。
假设用户发送一个 SQL 查询,它看起来像:
select * from table_1 as a left join table_2 as b on a.id=b.id
Run Code Online (Sandbox Code Playgroud)
我想获得所有表格列表,如table_1和table_2。
正则表达式是唯一的选择吗?
我有两个rdd一个rdd只有一列其他有两列加入两个RDD上的键我已经添加了虚拟值0,有没有其他有效的方法这样做使用连接?
val lines = sc.textFile("ml-100k/u.data")
val movienamesfile = sc.textFile("Cml-100k/u.item")
val moviesid = lines.map(x => x.split("\t")).map(x => (x(1),0))
val test = moviesid.map(x => x._1)
val movienames = movienamesfile.map(x => x.split("\\|")).map(x => (x(0),x(1)))
val shit = movienames.join(moviesid).distinct()
Run Code Online (Sandbox Code Playgroud)
编辑:
让我在SQL中转换这个问题.比方说我有table1 (moveid)和table2 (movieid,moviename).在SQL中我们写了类似的东西:
select moviename, movieid, count(1)
from table2 inner join table table1 on table1.movieid=table2.moveid
group by ....
Run Code Online (Sandbox Code Playgroud)
这里的SQL table1只有一列,其中table2有两列仍然可以join工作,Spark中的相同方式可以连接来自两个RDD的键.
如何在scala中编写这个数学函数?无法在scala中找到exp.
1 /(1 + EXP(3.4761-101.09*0.05-0.0440))