一旦我在Spark中获得了一些Row类,无论是Dataframe还是Catalyst,我想将它转换为我的代码中的case类.这可以通过匹配来完成
someRow match {case Row(a:Long,b:String,c:Double) => myCaseClass(a,b,c)}
Run Code Online (Sandbox Code Playgroud)
但是当行有大量的列,比如十几个双打,一些布尔,甚至偶尔的空位时,它变得丑陋.
我想能够将-all-cast转换为myCaseClass.是否可能,或者我已经获得了最经济的语法?
我注意到一些json查询,特别是在谷歌服务中,返回一个特殊的"json",它以一个结束序列开始,然后它只有一个数组结构,用方括号指定.
这是什么样的ajax?是否有一些库,js或py,解析它?
举一个更具体的例子:
>>> import json
>>> import urllib2
>>> url=urllib2.urlopen("https://plus.google.com/u/0/_/socialgraph/lookup/visible/?o=%5Bnull%2Cnull%2C%22114423404493486623226%22%5D")
>>> url.readline()
")]}'\n"
>>> url.readline()
'\n'
>>> url.readline()
'[["tsg.lac",[]\n'
Run Code Online (Sandbox Code Playgroud)
从那里,一个典型的阵列如下.因此,完整的答案是两行"标题",然后是一个数组,但"标题"非常令人费解,我想知道它是来自标准的ajax库还是只是这些人的想法.
啊,如果您使用Chrome的开发者工具查看实际查询,您会看到相同的内容.所以我被诱导认为它是一个真正的答案,而不是查询的工件.
比如说,应用程序的 CORS。嗯,不是一回事,但是...
假设我已经上传了一个应用程序到 Play 商店,现在我希望我的服务器只接受来自这个应用程序的连接。
我该怎么做?
我对操作系统的期望是一些过程,例如向我的 http 请求添加几个标头,指定市场中应用程序的 id,并使用 android 链或相应市场中的签名对整个请求进行签名CA证书链-. 然后我的服务器可以验证请求是否来自正确的应用程序。
另外,操作系统可以添加一些经过认证的硬件信息,因此如果应用程序在模拟器中运行,我也可以拒绝服务。
当然,另一种方法可能是在应用程序中包含一个“秘密”,但它总是可以通过反编译进行逆向工程,不是吗?或者是否有一些与 Play 商店相关联的密钥库可用于在向服务器发出 https 请求期间提供此机密?
第三种方法可能是使用 OAuth 登录的 azp 字段,但它也可能被反编译破坏,而且它会强制用户登录。
尝试使用Spark SQL的例子,除非需要表达式,否则它们似乎运行良好:
scala> val teenagers = people.where('age >= 10).where('age <= 19).select('name)
<console>:23: error: value >= is not a member of Symbol
val teenagers = people.where('age >= 10).where('age <= 19).select('name)
scala> val teenagers = people.select('name)
<console>:23: error: type mismatch;
found : Symbol
required: org.apache.spark.sql.catalyst.expressions.Expression
val teenagers = people.select('name)
Run Code Online (Sandbox Code Playgroud)
似乎我需要一个没有记录的导入.
如果我批量导入所有内容
import org.apache.spark.sql.catalyst.analysis._
import org.apache.spark.sql.catalyst.dsl._
import org.apache.spark.sql.catalyst.errors._
import org.apache.spark.sql.catalyst.expressions._
import org.apache.spark.sql.catalyst.plans.logical._
import org.apache.spark.sql.catalyst.rules._
import org.apache.spark.sql.catalyst.types._
import org.apache.spark.sql.catalyst.util._
import org.apache.spark.sql.execution
import org.apache.spark.sql.hive._
Run Code Online (Sandbox Code Playgroud)
编辑:......和
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
import sqlContext._
Run Code Online (Sandbox Code Playgroud)
有用.