我知道在某些语言(Haskell?)中,努力是实现无点样式,或者永远不要通过名称显式引用函数参数.这对我来说是一个非常难以掌握的概念,但它可以帮助我理解这种风格的优点(或者甚至是缺点).谁能解释一下?
我将RDD [myClass]转换为数据帧,然后将其注册为SQL表
my_rdd.toDF().registerTempTable("my_rdd")
Run Code Online (Sandbox Code Playgroud)
该表是可调用的,可以使用以下命令演示
%sql
SELECT * from my_rdd limit 5
Run Code Online (Sandbox Code Playgroud)
但是下一步会给出错误,说Table Not Found:my_rdd
val my_df = sqlContext.sql("SELECT * from my_rdd limit 5")
Run Code Online (Sandbox Code Playgroud)
Spark的相当新手.不明白为什么会这样.任何人都可以帮我解决这个问题吗?
java.lang.RuntimeException: Table Not Found: my_rdd
at scala.sys.package$.error(package.scala:27)
at org.apache.spark.sql.catalyst.analysis.SimpleCatalog$$anonfun$1.apply(Catalog.scala:111)
at org.apache.spark.sql.catalyst.analysis.SimpleCatalog$$anonfun$1.apply(Catalog.scala:111)
at scala.collection.MapLike$class.getOrElse(MapLike.scala:128)
at scala.collection.AbstractMap.getOrElse(Map.scala:58)
at org.apache.spark.sql.catalyst.analysis.SimpleCatalog.lookupRelation(Catalog.scala:111)
at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveRelations$.getTable(Analyzer.scala:175)
at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveRelations$$anonfun$apply$6.applyOrElse(Analyzer.scala:187)
at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveRelations$$anonfun$apply$6.applyOrElse(Analyzer.scala:182)
at org.apache.spark.sql.catalyst.trees.TreeNode$$anonfun$3.apply(TreeNode.scala:187)
at org.apache.spark.sql.catalyst.trees.TreeNode$$anonfun$3.apply(TreeNode.scala:187)
at org.apache.spark.sql.catalyst.trees.CurrentOrigin$.withOrigin(TreeNode.scala:50)
at org.apache.spark.sql.catalyst.trees.TreeNode.transformDown(TreeNode.scala:186)
at org.apache.spark.sql.catalyst.trees.TreeNode$$anonfun$4.apply(TreeNode.scala:207)
at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
at scala.collection.Iterator$class.foreach(Iterator.scala:727)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:103)
at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:47)
at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273)
at scala.collection.AbstractIterator.to(Iterator.scala:1157)
at scala.collection.TraversableOnce$class.toBuffer(TraversableOnce.scala:265)
at scala.collection.AbstractIterator.toBuffer(Iterator.scala:1157)
at scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:252)
at …Run Code Online (Sandbox Code Playgroud) 我有两个独立的PC连接到相同的Gitlab仓库.两者都运行Visual Studio Update 3并使用Team Explorer和Git.在一台PC上,我没有问题更新项目,然后将提交推送到远程仓库.然而,在另一台PC上,任何操作(推送或获取或同步)都会因Unsupported URL protocol错误而失败,尽管最初我设法克隆了回购.我怀疑它不喜欢连接字符串中的某些东西,因为我可以使用命令行git(版本2.9.2,因此相当近)提交和同步repo.导致此错误的原因是什么?是否有解决方法?
编译此代码段时,scala编译器会发出以下警告:
不推荐使用零参数方法值的Eta扩展.你打算写Main.this.porFiles5()吗?[warn] timerFunc(porFiles5)
当我将函数传递给另一个函数进行简单计时时,就会发生这种情况.定时器功能采用无参数功能返回单元,在此行:timerFunc(porFiles5).这个警告是否必要?什么是避免它的惯用方法?
package example
import java.nio.file._
import scala.collection.JavaConverters._
import java.time._
import scala.collection.immutable._
object Main extends App {
val dir = FileSystems.getDefault.getPath("C:\\tmp\\testExtract")
def timerFunc (func:()=>Unit ) = {
val start = System.currentTimeMillis()
timeNow()
func()
val finish = System.currentTimeMillis()
timeNow()
println((finish - start) / 1000.0 + " secs.")
println("==================")
}
def porFiles5(): Unit = {
val porFiles5 = Files.walk(dir).count()
println(s"You have $porFiles5 por5 files.")
}
def timeNow(): Unit = {
println(LocalTime.now)
}
timeNow()
timerFunc(porFiles5)
timeNow()
}
Run Code Online (Sandbox Code Playgroud) 我对设置远程服务器很陌生,但我今天玩得很开心,希望我可以在设置时利用云配置文件,以便在服务器启动时设置一些环境变量。
在 Digital Ocean 上启动机器时,如何以编程方式设置环境变量?关键是我想自动化设置并避免以交互方式定义这些变量。
提前致谢。
是否有将多个管道转换为功能组合的分步过程?
旁注: 我是否在正确的背景下使用"功能组合"一词?
我有以下代码:
let purchase qty inventory =
buyFrom inventory qty |> fromInventory
|> reduceBy qty
Run Code Online (Sandbox Code Playgroud)
我想重构这段代码以支持功能组合.
所以我想我可以这样做:
let purchase qty inventory =
buyFrom inventory >> fromInventory >> reduceBy qty
Run Code Online (Sandbox Code Playgroud)
这段代码编译.但是,当尝试在调试器中调用购买函数时,我似乎错过了一个参数.
这是我对该功能的测试:
[<Test>]
let ``buy last product``() =
[SomeProduct] |> purchase 1
|> should equal []
Run Code Online (Sandbox Code Playgroud)
注意:
我仍在努力解决FP基础问题,但仍然不了解将管道工作流转换为功能组合的过程.
我想我明白功能组合依赖于部分应用程序,我认为我现在已经处理好了.因此,我有理由相信我的重构函数缺少一个参数.
关于工作流程的任何指导我可以用来更好地进行功能组合?
附录:
type Product =
| SomeProduct
type TransactionResult = { Price:decimal; Inventory:Product list }
(* Functions *)
let priceOf qty product =
match product with
| SomeProduct -> match …Run Code Online (Sandbox Code Playgroud) Windows上的Google Chrome浏览器是否存在渲染iframe滚动条的问题?
我写了一个非常简单的代码来显示正在发生的事情(至少我在chrome 52.0.2743.82 m上):
<button>Toggle visibility</button>
<br />
<iframe scrolling="yes" seamless src="https://en.wikipedia.org/wiki/Lorem_ipsum" frameborder="0" style="width: 700px; height: 300px"></iframe>
<script type="text/javascript">
$("button").on("click", function() {
$("iframe").toggle();
});
</script>
Run Code Online (Sandbox Code Playgroud)
加载页面时,可以看到iframe作为滚动条.
隐藏并显示iframe单击按钮.滚动条消失.
这个问题显然只发生在chrome中.
有人也在经历这个吗?任何修复/解决方法?
Visual Studio代码中的F#interactive(带有Ionide)在Windows 10上默认具有语法高亮.我刚刚安装了一个Linux发行版,而VSCode + Ionide在交互式终端中没有显示语法高亮.
知道如何配置吗?这就是它现在的样子:
f# syntax-highlighting f#-interactive visual-studio-code ionide
给出一个简单的F#控制台应用:
[<EntryPoint>]
let main argv =
printfn "Hello world"
Console.ReadLine() |> ignore
0
Run Code Online (Sandbox Code Playgroud)
我需要做什么才能以与ctrl F5在Visual Studio中相同的方式启动控制台应用程序.我尝试使用Fake.ProcessHelper从FAKE构建脚本运行它:
Target "Run" (fun _ ->
let exe = @"C:\Source\code\fs_console_app\build\fs_console_app.exe"
let errorCode = Shell.AsyncExec(exe, "", buildDir)
()
)
Run Code Online (Sandbox Code Playgroud)
点击Ctrl F5我收到以下构建报告:
Target Duration
------ --------
Build 00:00:00.3916039
Run 00:00:00.0743197
Total: 00:00:00.5605493
Status: Ok
Run Code Online (Sandbox Code Playgroud)
但没有控制台应用程序启动和等待输入的迹象.
我刚刚开始使用FSharp,我正在尝试在我的Mac上使用VSCode.我已按照所有安装说明进行操作https://github.com/dotnet/netcorecli-fsc/wiki/.NET-Core-SDK-1.0.1
然而,Inoide似乎无法拿起我添加的任何套餐.这是一个例子:
你可以看到插件运行正常,因为我得到类型信息,但它不会拿起包.徘徊在红色波浪形上显示错误The namespace of module 'FsUnit' is not defined
我正在运行dotnetcore 1.0.3和inoide-fsharp 2.25.10